Informationen zum Zurücksetzen von Kennwörtern für Benutzer mit Windows PowerShell-Skript abrufen

Ich muss zugeben, ich war in letzter Zeit ziemlich fasziniert von PowerShell, und obwohl ich keineswegs sehr gut darin bin, habe ich es geschafft, einige nützliche Skripte zusammenzustellen. Während ich PowerShell lernte, fand ich einige Probleme, die ich lösen konnte Auf diese Weise können Sie feststellen, wann ein Benutzer sein Kennwort zuletzt geändert hat und wie viele Tage, bis das Kennwort erneut geändert werden muss. Möglicherweise finden Sie dieses bestimmte Skript nützlich oder nicht, aber es veranschaulicht die Art der Anpassung, die Sie mit PowerShell vornehmen können, um Aufgaben Ihrer Wahl auszuführen.

Hinweis: Bei Verwendung dieser Funktion wird davon ausgegangen, dass Konten vorhanden sind, deren Kennwörter ablaufen. Es werden jedoch auch Konten gemeldet, deren Kennwörter nicht ablaufen. Voraussetzung: Sie müssen das Active Directory-Modul in Ihre PowerShell-Sitzung importieren, indem Sie das Aktivierungsverzeichnis des Importmoduls ausführen, damit diese Funktion ordnungsgemäß funktioniert.

Fertig machen

Das Problem, das ich gestartet hatte, als ein Mitarbeiter nach dem Zurücksetzen eines Benutzerkontokennworts fragte. Active Directory stellt diese Informationen nicht genau zur Verfügung, damit Sie sie sehen können. Dies ist normalerweise eine gute Sache. Dies war eine gute Gelegenheit, um zu sehen, ob PowerShell helfen kann.

Funktion, Skript oder interaktive Befehlszeile

Obwohl alle diese Methoden funktionieren und sogar denselben Code verwenden, dachte ich, dass dies etwas sein könnte, das ich wiederverwenden würde, und entschied mich daher, eine Funktion zu erstellen, die sich eher wie ein Cmdlet verhält, das auch in ein Profilskript geladen werden kann (aber das Teil ist ein anderer Beitrag).

 Funktion get-pwdset { 
 Param (Parameter (obligatorisch = $ true) Zeichenfolge $ Benutzer) 

Im obigen Code wird die Funktion get-pwdset mit dem erforderlichen Parameter $ user definiert, der als Zeichenfolge definiert ist.

Im nächsten Abschnitt der Funktion wird eine Variable definiert, die ein Active Directory-Benutzerobjekt mit angegebenen Eigenschaften für passwordneverexpires und passwordlastset enthält .

 $ use = get-aduser $ user -properties passwordlastset, passwordneverexpires 

Im nächsten Abschnitt habe ich mich entschlossen, nach Konten zu suchen, deren Kennwörter nicht ablaufen. Dies diente dazu, Fehler beim Umgang mit Konten zu vermeiden, die nicht ablaufen.

 If ($ use.passwordneverexpires -eq $ true) 
 { 
 write-host $ user "hat zuletzt sein Passwort auf" $ use.passwordlastset "gesetzt. Dieses Konto hat ein nicht ablaufendes Passwort" -foregroundcolor gelb 
 }} 

Wenn das an die Funktion übergebene Konto ein nicht ablaufendes Kennwort hat, wird das Datum des letzten festgelegten Kennworts angezeigt und eine Meldung angezeigt, dass das Konto ein nicht ablaufendes Kennwort in Gelb hat.

 Sonst 
 { 
 $ til = ((datetime :: FromFileTime ((get-aduser $ user -properties "msDS-UserPasswordExpiryTimeComputed"). "msDS-UserPasswordExpiryTimeComputed")) - (get-date)). Tage 
 if ($ til -lt "5") 
 { 
 write-host $ user "hat zuletzt sein Passwort auf" $ use.passwordlastset "gesetzt, es läuft wieder in" $ til "days" -foregroundcolor red ab 
 }} 
 sonst 
 { 
 write-host $ user "hat zuletzt sein Passwort auf" $ use.passwordlastset "gesetzt, es läuft wieder in" $ til "days" -foregroundcolor green ab 
 }} 

Mit dieser Funktion können Sie den folgenden get-pwdset-Juser eingeben, damit Powershell Active Directory überprüft, um festzustellen, wann das Juser- Objekt sein Kennwort zuletzt festgelegt hat und wie viele Tage bis zum Ablauf des Kennworts vergehen. Ein Beispiel ist unten in Abbildung A dargestellt.

Abbildung A.

Die Funktion get-pwdset wird für den Benutzertest ausgeführt (zum Vergrößern klicken)

Hoffentlich ist diese kleine Funktion für Sie nützlich, wenn das Auffinden des Kennwortablaufs ein Problem ist, das Sie lösen müssen.

© Copyright 2020 | mobilegn.com