Ich muss die letzte Kennwortänderung für eine Gruppe von Konten in einer Active Directory-Sicherheitsgruppe abrufen, und ich bin der Meinung, dass PowerShell darin gut sein sollte.
Im Moment weiß ich noch nicht, wie ich das Attribut pwdLastSet aus dem angezeigten AD-Konto lesen soll. Sogar mit etwas Einfachem wie diesem:
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
gibt Ergebnisse für pwdLastSet aus, die wie folgt aussehen:
pwdLastSet : {System.__ComObject}
Ich habe das Gefühl, dass ich das falsch gemacht habe. Wie kann ich also die Ausgabe des Attributs pwdLastSet am besten abfragen und dann formatieren (der Wert basiert auf der Windows-Epoche und ist nicht sehr gut lesbar)?
Die in Windows 7 / Windows Server 2008 R2 enthaltenen integrierten AD-Befehle können dies jetzt einfach genug ausführen. Unter Windows 7 über eine PowerShell-Eingabeaufforderung:
Das Attribut "PasswordLastSet" scheint eine übersetzte Version des tatsächlichen Attributs "pwdLastSet" zu sein.
quelle
Es gibt einen einfacheren Weg.
Das ADSI-Objekt verfügt über eine Methode namens ConvertLargeIntegerToInt64. Beachten Sie, dass es sich um eine Methode des ADSI-Objekts und nicht um das System .__ Comobject handelt, das durch Abfragen des Werts eines Zeitstempel-Attributs zurückgegeben wird, sodass $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () nicht funktioniert. Sie müssen es folgendermaßen aufrufen:
Dadurch erhalten Sie den LDAP-Zeitstempel, der in ein lesbares Datum konvertiert werden muss, wie oben von Bratch erläutert. Dies funktioniert für jeden Zeitstempelattributwert, der vom ADSI-Anbieter zurückgegeben wird, und die ConvertLargeIntegerToInt64-Methode wird (glaube ich) von jedem Objekt angezeigt, das einen Verzeichniseintrag darstellt.
Wenn Sie alles zusammenfassen, erhalten Sie das Datum, an dem das Passwort zuletzt festgelegt wurde:
quelle
So können Sie die AD-Computer auf einfache Weise anzeigen:
quelle
Installieren Sie: http://www.quest.com/powershell/activeroles-server.aspx
offene Powershell
Führen Sie die folgenden Befehle aus:
add-PSSnapin quest.activeroles.admanagement
Get-QADUser | ft Anzeigename, PasswordLastSet
Der erste Befehl lädt das gerade heruntergeladene Quest-Snapin. Sie brauchen dies nicht zu tun, wenn Sie die Verknüpfung zum Suchen in Ihrem Startmenü verwenden. Der zweite Befehl ruft eine Liste aller und der Benutzer sowie die Uhrzeit ab, zu der das Kennwort zuletzt geändert wurde.
quelle
Fügen Sie die ConvertADSLargeInteger-Funktion zu Ihrem Skript hinzu. Sie erhalten sie hier:
PowerShell: Konvertieren Sie Active Directory IADSLargeInteger in System.Int64
So würden Sie es verwenden:
quelle
Vielleicht sollten Sie die passwordLastChanged -Eigenschaft verwenden. Weitere Informationen finden Sie hier: http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
quelle