
Ich kann Powershell erfolgreich verwenden, um festzustellen, ob sich ein Benutzer im Active Directory authentifiziert:
Function Test-ADAuthentication {
param($username,$password)
(new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null
}
Test-ADAuthentication "test" "Password1"
Ich kann jedoch beim besten Willen nicht herausfinden, wie ich:
- Überprüfen Sie, ob das Passwort zurückgesetzt werden muss, während
- Die Überprüfung der gesendeten Anmeldeinformationen hat mit ihrem letzten Kennwort funktioniert.
Wie könnte man dabei vorgehen?
Antwort1
Anmeldeinformationen können durch Ausführen eines Prozesses getestet werden. Ein Beispiel unten:
Start-Process -FilePath cmd.exe /c -Credential (Get-Credential -UserName $username -Message 'Test Credential')
Oder einfach:
Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)
Sie werden aufgefordert, ein Passwort einzugeben. Wenn Sie das Passwort aus einer Zeichenfolge lesen müssen (schlechte Vorgehensweise), müssen Sie das Anmeldeinformationsobjekt vorher initialisieren. Weitere Einzelheiten zu dieser Methode finden Sie in der Hilfe.
Get-Help Get-Credential
Antwort2
So können Sie die verbleibenden Tage für einen bestimmten Benutzer ermitteln, bevor sein Kennwort abläuft:
(([datetime]::FromFileTime((Get-ADUser user -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")) - (Get-Date)).TotalDays
Wenn die Zahl 0 oder negativ ist, ist das Passwort abgelaufen.
Dieser Befehl prüft, ob das Benutzerkonto gesperrt ist:
(Get-ADUser user -Properties LockedOut).LockedOut
Was die zweite Frage betrifft: Wenn ich das richtig verstehe, möchten Sie sehen, ob das aktuell eingegebene Passwort mit dem zuvor verwendeten identisch ist.
Dies ist meines Wissens nicht möglich. Mit bestimmten Richtlinien kann AD vorherige Passwörter aufzeichnen, diese werden jedoch nicht für den externen Zugriff offengelegt.