2016-10-06 5 views
0

私はユーザーのリストを持っており、グループ名をエクスポートして、A-Zを並べ替えたいと思います。次のスクリプトは、内側のForEach-Objectループでは機能しません。Powershell - テキストファイルのユーザーグループメンバーシップ

Get-Content users.txt | ForEach-Object { 
    $user = $_; 

    Get-ADUser –Identity $user –Properties MemberOf | Select-Object -ExpandProperty MemberOf | sort 

    ForEach-Object { 

     New-Object PSObject -property @{User=$user;Group=$_;} 

    } 
} | Export-Csv -Path 'your_file_path.csv' -NoTypeInformation 
+0

改善の目標は何ですか?読みやすさ? CPU効率?メモリ効率?速度?エラー処理? –

+0

入れ子にされた 'foreach-object'には入力がないので、 '動作させる'と思います。 – TessellatingHeckler

+0

あなたは質問を明確にして、読者が必要なものを知るようにする必要があります。 –

答えて

0

を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 
    } 
} 
+0

hunkle - 返信いただきありがとうございます。私はユーザーのリストを持っているので、A-Zだけでユーザーグループのメンバシップ名ごとにソートし、グループメンバーシップ名をエクスポートする必要があります。このスクリプトは、CH#Plus OUなどをエクスポートします。どうすればスクリプトを改善できますか?ありがとう – kbriaz

+0

@kbriaz私は出力にグループ名だけが含まれていて、識別名には含まれないように答えを更新しました。 –

+0

多くのありがとう。スクリプトは魔法のように機能し、リスト内のユーザーのすべてのグループ名をエクスポートします。ただし、PowerShellウィンドウ内でエラーが発生します。 (get-adgroup:IDが 'CN = \ XXX XXXイギリスすべて(1)、OU = XXXグループ、OU = XXX グループ、DC = XXX、DC = XXX、DC = XX' 'DC = XX、DC = XXX、DC = XXX')これはなぜですか?私はそれを無視する必要がありますか?エクスポートには必要なデータが含まれています。ご迷惑をおかけして申し訳ありません。 Ta – kbriaz

関連する問題