をForEach-Objectにはただ一人でそこに座っている - あなたはそれのいずれかにパイプオブジェクトに持っている、または変数にオブジェクトを代入し、代わりにオブジェクトをループにforeach
を使用しています。私は以下の2番目のアプローチを取った。過剰なパイピングはスクリプトを読みにくくする(私のために)。
Get-Content c:\temp\users.txt | ForEach-Object {
$user = $_;
$AdUser = Get-ADUser –Identity $user –Properties MemberOf | Select-Object -ExpandProperty MemberOf | get-adgroup | select -ExpandProperty Name | sort
foreach($group in $AdUser) {
New-Object PSObject -property @{User=$user;Group=$group;} | Export-Csv -Path 'c:\temp\out.csv' -NoTypeInformation -Append
}
}
...そしてあなたはパイプにそれをしたいとForEach-Object
を使用している場合、あなただけのsort
後にパイプを入れて、それが作成された新しいオブジェクトエクスポートするようExport-Csv
を移動する必要があります。
Get-Content c:\temp\users.txt | ForEach-Object {
$user = $_;
Get-ADUser –Identity $user –Properties MemberOf | Select-Object -ExpandProperty MemberOf | get-adgroup | select -ExpandProperty Name | sort |
ForEach-Object {
New-Object PSObject -property @{User=$user;Group=$_;} | Export-Csv -Path 'c:\temp\out.csv' -NoTypeInformation -Append
}
}
を
改善の目標は何ですか?読みやすさ? CPU効率?メモリ効率?速度?エラー処理? –
入れ子にされた 'foreach-object'には入力がないので、 '動作させる'と思います。 – TessellatingHeckler
あなたは質問を明確にして、読者が必要なものを知るようにする必要があります。 –