2017-12-13 15 views
1

2行のPowerShellを一緒にステッチしようとしていますが、構文を理解できません。 a postが必要なように聞こえますが、-LDAPFilterを使用していません。最後の100日間に作成ADユーザーのリストを生成するget-ADUserの出力をLDAPフィルタを使用してGet-ADGroupにパイプする

、私は

$now = ((Get-Date).AddDays(-100)).Date 
$users = Get-ADUser -Filter {whenCreated -ge $now} -Searchbase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" | 
     Where-Object { $_.Enabled -eq 'True' } 

を使用して、"How to get ALL AD user groups (recursively) with Powershell or other tools?"から、このコードは、ユーザーがメンバーであるすべてのグループを見つけることである次のステップを行いますof:

$username = 'd.trump' 
$dn = (Get-ADUser $username).DistinguishedName 
Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $dn) | 
    select -Expand Name 

しかし、私は全体のリストを取得するために最初の出力を2番目にパイプすることはできません。

Get-ADUser -Filter {whenCreated -ge $now} -Searchbase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" | 
    Where-Object { $_.Enabled -eq 'True' } | 
    Select-Object DistinguishedName | 
    Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $_) | 
    select -expand Name 

エラーメッセージは次のとおりです。

は、Get-広告グループを:検索フィルタが

を認識することができない私は、2番目のコードスニペットはdistingushed名を抽出し、フィルタにそれを与え思いましたそれが私がパイプラインでやろうとしたことです。

+3

未テスト: 'ゲット-広告グループ-LDAPFilterを( "..." -f $ _) ' - >' Get-ADGroup -LDAPFilter {"..." -f $ _} 'となります。それ以外の場合: 'Get-ADGroup -LDAPFilter(" ... "-f $ _)' - > '%{Get-ADGroup -LDAPFilter(" ... "-f $ _)}' –

+1

補遺: Select-Object DistinguishedName' - > 'Select-Object -Expand DistinguishedName'を実行します。そうでなければ、後で' $ _。DistinguishedName'を使う必要があります。 –

答えて

1

ForEach-Object(別名%)がありません。

次のコードは動作するはずです

Get-ADUser -Filter {whenCreated -ge $now} -SearchBase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" ` 
| Where-Object { $_.Enabled -eq 'True' } ` 
| %{Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $_.DistinguishedName)} ` 
| Select-Object -ExpandProperty Name 

あなたは出力ユーザーの両方とグループの情報にしたい場合は、このようなコード展開することができます。

Get-ADUser -Filter {whenCreated -ge $now} -SearchBase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" ` 
| Where-Object { $_.Enabled -eq 'True' } ` 
| %{$group = Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $_.DistinguishedName);Write-Output $_.UserPrincipalName $group.Name} 
+0

出力のグループ名と一緒にユーザー名を取得するにはどうすればいいですか?私はちょうどループを使用することはあまり使用されていないことを認識しているグループは、関連付けられているユーザー名ではなく、表示されます – DJDave

+1

私の編集を参照してください。もちろん、出力を異なる方法でフォーマットすることも可能です。 – Christophe

関連する問題