Wie kann ich meine Foreach-Schleife in Powershell für jeden Active Directory-OU-Benutzer korrigieren?

Wie kann ich meine Foreach-Schleife in Powershell für jeden Active Directory-OU-Benutzer korrigieren?

Ziel: Erstellen Sie eine For- oder Foreach-Schleife, um Code für jeden Benutzer in einer Organisationseinheit auszuführen (in diesem Fall einfach x drucken). Ich verwende Powershell 2.0 mit ActiveDirectory-Modul.

Bis jetzt: Das ist, was ich habe (siehe unten). Es druckt einfach die X für jeden Benutzer aus. Aber es funktioniert nicht so, wie ich es möchte, sondern ich denke, es macht es vielleicht für jede Zeile. Also bekomme ich 6 X für „Name“, „----“, „Test1“, „Test2“, LEERTASTE, LEERTASTE.

$pool = Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Test,OU=Users,OU=jack,DC=Corp,DC=jill,DC=com" -Properties name | FT name
foreach ($user in $pool )
{ write-host "x"}
$pool

Ergebnis, das LEERZEICHEN wird durch einen Punkt (.) dargestellt:

x
x
x
x
x
x


name                        
----                      
test1                  
test2
.
.

Ich bin mir nicht sicher, warum das so ist. Wenn Sie eine bessere Methode oder einen besseren Weg kennen, damit umzugehen, würde ich mich freuen, davon zu hören.

Antwort1

Ihr $poolenthält die Ausgabe des Format-Table nameletzten Schritts in der ersten Zeile. Die Format-*Cmdlets werden zum Anzeigen von Werten auf dem Bildschirm verwendet. Sie möchten Ihrer foreachSchleife mit ziemlicher Sicherheit keine formatierte Tabelle zuführen.

$pool = Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Test,OU=Users,OU=jack,DC=Corp,DC=jill,DC=com"
foreach ($user in $pool) {
  Write-Host "x"
}

# And if you really want to see an `ft $pool`:
$pool | Format-Table name

verwandte Informationen