AD-Passwort per PowerShell ändern
Passwort-Resets gehören zu den Standardaufgaben im Active Directory – und sind per PowerShell meist schneller (und besser automatisierbar) als über die GUI. Voraussetzung ist das ActiveDirectory-Modul (RSAT) sowie ein Konto mit passenden Rechten.
Kurz & knapp
Passwort zurücksetzen (Admin-Reset):
Set-ADAccountPassword -Identity "<User>" -Reset -NewPassword (Read-Host -AsSecureString "Neues Passwort")
Änderung beim nächsten Login erzwingen:
Set-ADUser -Identity "<User>" -ChangePasswordAtLogon $true
Voraussetzungen: AD-Modul (RSAT) installieren und laden
Auf Windows-Clients (10/11) ist RSAT heute ein Windows Capability und wird nicht mehr als separater Download verteilt. Die offizielle Anleitung beschreibt die Installation je nach Plattform.
Anschließend (falls nötig) das Modul laden:
Import-Module ActiveDirectory
1) Passwort zurücksetzen (Admin-Reset)
Für einen Reset (ohne Kenntnis des alten Passworts) nutzen Sie Set-ADAccountPassword mit -Reset und übergeben das neue Kennwort als SecureString.
$user = "username" # sAMAccountName, DN, GUID, SID … $newPwd = Read-Host -AsSecureString "Neues Passwort" Set-ADAccountPassword -Identity $user -NewPassword $newPwd -Reset
Hinweis: Ohne -Reset erwartet das Cmdlet i. d. R. zusätzlich -OldPassword. Mit -Reset ist das alte Kennwort nicht erforderlich.
2) „Passwort bei nächster Anmeldung ändern“ erzwingen
Das Flag setzen Sie nicht in Set-ADAccountPassword, sondern mit Set-ADUser über -ChangePasswordAtLogon.
Set-ADUser -Identity $user -ChangePasswordAtLogon $true
Kombiniert (Reset + Erzwingen) sieht das dann so aus:
$user = "username" $newPwd = Read-Host -AsSecureString "Neues Passwort" Set-ADAccountPassword -Identity $user -NewPassword $newPwd -Reset Set-ADUser -Identity $user -ChangePasswordAtLogon $true
3) Sonderfall: Benutzer ändert sein eigenes Passwort
Wenn ein Anwender (oder ein Service mit Benutzerkontext) das Kennwort regulär ändern soll, kommen -OldPassword und -NewPassword ohne -Reset zum Einsatz.
$user = "username" $oldPwd = Read-Host -AsSecureString "Altes Passwort" $newPwd = Read-Host -AsSecureString "Neues Passwort" Set-ADAccountPassword -Identity $user -OldPassword $oldPwd -NewPassword $newPwd
Fehlerquellen
- AD-Modul fehlt:
Set-ADAccountPassword/Set-ADUserfunktionieren nur mit geladenem ActiveDirectory-Modul (RSAT). - Fehlende Rechte: Ohne „Reset password“-Berechtigung (bzw. Delegation) schlägt der Reset fehl – oft mit „Access is denied“.
- Passwort-Richtlinien: Komplexität, Mindestlänge, Passwort-Historie oder „Password never expires“/Fine-Grained Password Policies können den Reset verhindern.
- RODC im Spiel: Ein Read-Only Domain Controller kann keine Passwortänderungen schreiben – stellen Sie sicher, dass Sie gegen einen beschreibbaren DC arbeiten (ggf. per
-Server). - Falscher Ziel-DC/Port: Gegen Global-Catalog-Ports (3268/3269) funktionieren Schreiboperationen nicht zuverlässig – nutzen Sie einen normalen DC-Port (389/636) bzw. den richtigen
-Server. - SecureString vergessen:
-NewPassworderwartet einen SecureString – Plaintext führt häufig zu Fehlern oder unsauberer Praxis. - Replikation/Timing: Direkt nach dem Reset kann es je nach Site/Replikation kurz dauern, bis alle DCs den neuen Stand haben (besonders bei verteilten Umgebungen).