Wenn in einer Windows-Domänenumgebung eine größere Anzahl von Benutzerkonten das Passwort zurücksetzen muss – beispielsweise in einer bestimmten Organisationseinheit (OU) – bietet PowerShell eine schnelle und effiziente Lösung. Im Folgenden seht ihr, wie ihr mit nur wenigen Zeilen Code sicherstellt, dass alle Benutzer beim nächsten Login ein neues Passwort wählen müssen.
PowerShell-Befehl
Get-ADUser -Filter * -SearchBase "OU=XYZ,OU=USER,DC=CONTOSO,DC=LOCAL" | ForEach-Object
{
Set-ADUser -Identity $_ -PasswordNeverExpires $false -ChangePasswordAtLogon $true
}
Funktionsweise des Skripts
- Get-ADUser -Filter *:
- Ruft alle Benutzerobjekte in der angegebenen OU ab.
- -SearchBase:
- Legt die zu durchsuchende Organisationseinheit fest, z. B.
"OU=XYZ,OU=USER,DC=CONTOSO,DC=LOCAL"
.
- Legt die zu durchsuchende Organisationseinheit fest, z. B.
- ForEach-Object:
- Iteriert über jeden gefundenen Benutzer.
- Set-ADUser -Identity $_:
- Ändert für das aktuelle Benutzerobjekt die gewünschten Attribute.
- -PasswordNeverExpires $false: Deaktiviert das „Passwort läuft nie ab“-Attribut.
- -ChangePasswordAtLogon $true: Erzwingt die Passwortänderung beim nächsten Anmelden.
Wann ist dieses Skript sinnvoll?
- Passwortrichtlinien anpassen: Wenn eure Organisation aufgrund neuer Sicherheitsrichtlinien alle Benutzer zu einem Passwortwechsel zwingt.
- Vorbereitung auf Audits: Viele Compliance-Anforderungen (z. B. ISO 27001) setzen zeitnahe Passwortänderungen voraus.
- Massenoperationen: Statt jeden Benutzer einzeln zu bearbeiten, bietet sich ein automatisiertes Skript an.
Erweiterungen und Anpassungen
- Passwort zurücksetzen (optional)
Möchtet ihr zusätzlich ein neues Standardpasswort vergeben, kann das Skript um folgende Zeile ergänzt werden:Set-ADAccountPassword -Identity $_ -Reset -NewPassword (ConvertTo-SecureString "Neues-Passwort-123" -AsPlainText -Force)
- Gezielte Filter verwenden
Statt-Filter *
könnt ihr spezifische Filter verwenden, um nur bestimmte Benutzer zu treffen. Z. B.:Get-ADUser -Filter { Enabled -eq $true } -SearchBase ...
- Damit werden nur aktive Konten ausgewählt.
- Protokollierung
Um einen Bericht über geänderte Konten zu erstellen, könnt ihr die Ausgabe in eine CSV-Datei schreiben:Get-ADUser -Filter * -SearchBase "OU=XYZ,OU=USER,DC=CONTOSO,DC=LOCAL" | ForEach-Object { Set-ADUser -Identity $_ -PasswordNeverExpires $false -ChangePasswordAtLogon $true $_ } | Export-Csv -Path "C:\Logs\PasswortReset.csv" -NoTypeInformation
Tipps
- Testumgebung: Führt das Skript zunächst in einer Test-OU oder Testumgebung aus, um mögliche Fehler frühzeitig zu erkennen.
- Zugriffsrechte: Stellt sicher, dass das verwendete Admin-Konto die nötigen Berechtigungen hat, um Änderungen bei den Konten vorzunehmen.
- Benutzerkommunikation: Informiert die betroffenen Benutzer rechtzeitig über den anstehenden Passwortwechsel, um Support-Anfragen zu reduzieren.
Die hier gezeigte PowerShell-Lösung ermöglicht eine schnelle und zuverlässige Massenänderung von Passwörtern. Insbesondere in größeren Umgebungen oder bei kurzen Wartungsfenstern spart ihr so kostbare Zeit und reduziert den manuellen Aufwand erheblich. Dank der Filterung könnt ihr sehr gezielt arbeiten und sicherstellen, dass nur die gewünschten Benutzerkonten betroffen sind.
Quellen
Microsoft Docs: Set-ADUser | Dokumentation zum Cmdlet Set-ADUser. |
Microsoft Docs: Get-ADUser | Dokumentation zum Cmdlet Get-ADUser. |
TechNet Gallery Archive | (Archiv) Verschiedene PowerShell-Beispiele für AD-Administration. |
PowerShell Magazine | Allgemeine Tutorials & Artikel rund um PowerShell. |
Hinterlasse jetzt einen Kommentar