Der Tag wird kommen an dem man plötzlich die Passwörter von hunderten AD-Accounts setzen muss. Dank der stets voranschreitenden Entwicklung von Powershell, kann man dies auch ohne Überstunden machen.
Ein paar typische Befehle mit Set-ADAccountPassword and Get-Aduser habe ich hier zusammengestellt.
Passwort eines AD-Accounts mit Set-ADAccountPassword ändern
$Passwort = ConvertTo-SecureString -AsPlainText 'New password' -Force
Set-ADAccountPassword dampf.hans -Reset -NewPassword $Passwort
Passwörter von ähnlichen AD-Accounts resetten
$Passwort = ConvertTo-SecureString -AsPlainText 'New password' -Force
Get-ADuser -Filter 'Name -like "service.phone*"' | Set-ADAccountPassword -Reset -NewPassword $Passwort
Mit Get-Aduser filtern wir die Nutzer raus deren Passwort wir mit Set-ADAccountPassword setzen wollen.
Passwort setzen und AD-Account aktivieren
Passwortänderung überprüfen
Wenn man massenhaft Passwörter der AD-Accounts ändert, sollte man auch prüfen ob die tatsächlich geändert wurden. Dafür müssen wir uns nur die Attribute whenChanged, pwdLastSet, PasswordLastSet
Get-ADuser -Filter 'Name -like "service.phone*"' -Properties GivenName,whenChanged,pwdLastSet,PasswordLastSet
Set-ADAccountPassword Troubleshooting
Set-ADAccountPassword – Permission Denied
Dieser Fehler ist fast ein Klassiker und kann „der Teufel steckt im Detail“ zugeordnet werden 😉
Als erstes solltet ihr sicherstellen, dass ihr überhaupt genügend Berechtigungen im AD habt! Dazu AD-User and Computers aufrufen und das Passwort einmal manuell setzen. Wenn das klappt, habt ihr zumindest die korrekte Berechtigung. Ein weiterer Grund kann sein, dass die Powershell Console oder Powershell ISE nicht mit „run as Administrator“ gestartet ist.
- Berechtigung eures Nutzers im AD prüfen
- Powershell Console / ISE mit „run as Administrator“ starten
Set-ADAccountPassword : Access is denied
At line:X char:x
+ Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -As …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (service.phone01:ADAccount) [Set-ADAccountPassword], UnauthorizedAccessException
+ FullyQualifiedErrorId : Access is denied,Microsoft.ActiveDirectory.Management.Commands.SetADAccountPassword
falscher Code
$Passwort="S1cher1stS1cher!"
Get-ADuser -Filter 'Name -like "service.phone*"' | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $Passwort -Force)
Warum (ConvertTo-SecureString -AsPlainText $Passwort -Force) manchmal nicht innerhalb vom Aufruf von Set-ADAccountPassword arbeitet, habe ich nicht rausbekommen.
richtiger Code
$Passwort = ConvertTo-SecureString -AsPlainText 'S1cher1stS1cher!' -Force
Get-ADuser -Filter 'Name -like "service.phone*"' | Set-ADAccountPassword -Reset -NewPassword $Passwort
„ConvertTo-SecureString -AsPlainText“ sollte schon in der Passwort-Variable aufgerufen werden