Muszę uzyskać ostatnią zmianę hasła dla grupy kont w grupie zabezpieczeń Active Directory i uważam, że PowerShell powinien być w tym dobry.
W tej chwili już utknąłem, jak odczytać atrybut pwdLastSet z konta AD, na które patrzę. Nawet uruchamiając coś tak prostego:
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
daje wyniki dla pwdLastSet, które wyglądają tak:
pwdLastSet : {System.__ComObject}
Wydaje mi się, że podchodzę do tego w niewłaściwy sposób, więc jaki jest najlepszy sposób na zapytanie, a następnie sformatowanie danych wyjściowych (wartość oparta na Epoce Windows i niezbyt czytelna dla człowieka) atrybutu pwdLastSet?
Wbudowane komendy AD, które są dostarczane z Windows 7 / Windows Server 2008 R2, mogą teraz to zrobić po prostu. W systemie Windows 7 z wiersza polecenia programu PowerShell:
Atrybut „PasswordLastSet” wydaje się być przetłumaczoną wersją rzeczywistego atrybutu „pwdLastSet”.
źródło
Jest łatwiejszy sposób.
Obiekt ADSI ma metodę o nazwie ConvertLargeIntegerToInt64. Zauważ, że jest to metoda obiektu ADSI, a nie Systemu .__ Comobject, który jest zwracany przez zapytanie o wartość atrybutu znacznika czasu, więc $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () nie będzie działać. Musisz go wywołać w następujący sposób:
Otrzymasz znacznik czasu LDAP, który należy przekonwertować na czytelną datę, jak wyjaśniono powyżej w Bratch. Będzie to działać dla każdej wartości atrybutu znacznika czasu zwróconej przez dostawcę ADSI, a metoda ConvertLargeIntegerToInt64 jest (jak sądzę) ujawniona przez dowolny obiekt reprezentujący pozycję katalogu.
Podsumowując, oto jak uzyskać datę ostatniego ustawienia hasła:
źródło
Oto prosty sposób wyświetlania komputerów AD:
źródło
Zainstaluj: http://www.quest.com/powershell/activeroles-server.aspx
otwórz PowerShell
Uruchom następujące polecenia:
add-PSSnapin quest.activeroles.admanagement
Wyświetlana nazwa Get-QADUser | ft, PasswordLastSet
Pierwsze polecenie ładuje pobraną wcześniej przystawkę. Nie musisz tego robić, jeśli używasz skrótu do zadania w menu startowym. Drugie polecenie wyświetla listę wszystkich użytkowników oraz godzinę ostatniej zmiany hasła.
źródło
Dodaj funkcję ConvertADSLargeInteger do skryptu, możesz ją pobrać tutaj:
PowerShell: Konwertuj IADSLargeInteger z Active Directory na System.Int64
Oto, jak byś tego użył:
źródło
być może powinieneś rozważyć użycie właściwości passwordLastChanged. Zajrzyj tutaj, aby uzyskać więcej informacji: http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
źródło