AD-Passwort per PowerShell ändern

Lesezeit
1 Minute
Bis jetzt gelesen

AD-Passwort per PowerShell ändern

16.03.2024 - 00:00
Veröffentlicht in:

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-ADUser funktionieren 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: -NewPassword erwartet 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).