Die ForEach-Object sitzt nur da draußen allein - man muss entweder Rohr ein Objekt, um es, oder das Objekt einer Variablen zuweisen und stattdessen foreach
eine Schleife durch das Objekt verwenden. Ich habe den zweiten Ansatz unten genommen, da eine übermäßige Verrohrung das Lesen von Skripten erschwert (für mich).
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
}
}
... und wenn Sie es mit dem Rohr und verwenden möchten ForEach-Object
, brauchen Sie nur eine Pfeife nach der sort
zu setzen und die Export-Csv
so bewegen, dass sie das neue Objekt exportiert, die erstellt wurde:
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
}
}
Was ist das Ziel der Verbesserung? Lesbarkeit? CPU-Effizienz? Speichereffizienz? Geschwindigkeit? Fehlerbehandlung? –
Ich denke, es funktioniert ', weil das verschachtelte 'foreach-Objekt' keine Eingabe hat. – TessellatingHeckler
Sie müssen die Frage dann klären, damit die Leser wissen, was Sie brauchen. –