Es klingt wie Ihr Get-ADUser
kehrt nichts, so dass die foreach
Schleife wird nie eingegeben.
Get-ADUser
mit dem -Filter
Parameter nicht scheitern wenn keine Übereinstimmungen gefunden werden, ist es ruhig eine leere Auflistung zurückgibt.
A foreach
Schleife über eine leere Sammlung oder $null
wird einfach nie eingegeben, so insgesamt Sie ruhig no-op bekommen.
Beachten Sie, dass Sie nie -Properties SamAccountName
in einem Get-ADUser
Anruf benötigen, weil -Properties
nur zusätzliche Eigenschaften für jedes Ergebnisobjekt zurückzukehren benötigt wird, während SamAccountName
Teil des Standard Satz von Eigenschaften ist.
Deshalb:
- Sie benötigen
Get-ADUser
Anruf zu beheben,
- und Sie sollten auch Code hinzufügen, die den Fall des Anrufs erkennt unerwartet keine Objekte zurück.
Der folgende Ausschnitt zeigt die letztere, und es optimiert auch Ihren Befehl durch die Ausgabe von Get-ADUser
direkt an Set-ADUser
vorbei:
# Get the users of interest and pass them to the Set-ADUser call to update
# the City property.
# Note the use of -OutputVariable users, which saves the output from
# Get-ADUser in variable $users
Get-ADUser -OutputVariable users -Filter * -SearchBase 'OU=...' | Set-ADUser -City 'Alice'
# Report terminating error if no users were found.
# Note: -not $users returns $true if $users is an empty collection
# (or a similarly "falsy" value such as $null, 0, or '').
if (-not $users) { Throw "Get-ADUser unexpectedly returned nothing." }
Warum funktioniert es nicht? – TessellatingHeckler
Hallo N.Ma, willkommen zu stackoverflow! Versuchen Sie, Ihr Problem genauer zu beschreiben, was Sie gerade versuchen zu erreichen und wir werden versuchen, Ihnen zu helfen! –
Ich versuche, das Stadtattribut für alle Benutzer in einer bestimmten Organisationseinheit zu aktualisieren. Wenn ich das obige Skript ausgeführt habe, wird die Stadt nicht auf Alice gesetzt. –