Odpowiedzi:
Dla potomności dsquery jest przeznaczone do tego rodzaju wyszukiwania. AD utrzymuje pole „whenCreated”, które ułatwia wyszukiwanie za pomocą wybranego narzędzia.
dsquery *-filter "(whenCreated> = 20101022083730.0Z)"
Jako przykład. Możesz programowo utworzyć harmonogram na podstawie teraz - 90 dni.
Spróbuj wykonać następujące czynności, aby wyciągnąć użytkowników utworzonych w ciągu ostatnich 30 dni.
Get-ADUser -Filter * -Properties whenCreated | Where-Object {$_.whenCreated -ge ((Get-Date).AddDays(-30)).Date}
Alternatywa do pokazanej powyżej wersji PowerShell, która jest znacznie bardziej wydajna, ponieważ nie ładuje wszystkich użytkowników w pamięci przed ich filtrowaniem (powinieneś wykonać filtr bezpośrednio z cmdletu Get-ADUser i nie używać Where-Object):
$now = ((Get-Date).AddDays(-90)).Date
Get-ADUser -Filter {whenCreated -ge $now}
Używając PowerShell i Quest ActiveRoles Tools for AD (tutaj - http://www.quest.com/powershell/activeroles-server.aspx ),
Get-QADUser -CreatedAfter (Get-Date).AddDays(-90)
da ci wyjście do konsoli lub gdziekolwiek przekierujesz wszystkich użytkowników utworzonych w ciągu ostatnich 90 dni.
Oto przykład z innej witryny osoby pobierającej wszystkie konta AD posortowane według daty utworzenia:
http://www.experts-exchange.com/Security/Operating_Systems_Security/Windows/Q_21117191.html
Możesz utworzyć datę utworzenia każdego konta z Active Directory. Każdy obiekt AD ma atrybut WhenCreated i WhenChanged. Możesz zrzucić te atrybuty do płaskiego pliku za pomocą narzędzia LDIFDE lub możesz zrzucić je do pliku rozdzielanego przecinkami za pomocą CSVDE (oba narzędzia są dostarczane z systemem Windows 2000).
Oto składnia, aby zrzucić do konsoli dwa atrybuty obiektów użytkownika w jednostce organizacyjnej o nazwie Phoenix w domenie o nazwie Company.com (cały wpis należy wpisać w jednym wierszu):
ldifde -d ou = feniks, dc = firma, dc = com -l po utworzeniu, po zmianie -p onelevel -r "(ObjectCategory = użytkownik)" -f con
Jeśli chcesz zapisać zrzut do pliku, zmień przełącznik -f z con na nazwę pliku.
Znacznik czasu ostatniego logowania korzysta z tego formatu: RRRRMMDDGGMMSS, a godzina jest podana w Uniwersalnym czasie koordynowanym. Znacznik czasu 20040115182937.0Z odpowiada 15 stycznia 2004 18:29:37 UCT.
USRSTAT działa wolno, a otrzymany raport należy scalić ze zrzutem LDIFDE. Przygotowałem więc skrypt, który wyszukuje obiekty użytkownika na każdym kontrolerze domeny, a następnie podaje lokalny czas logowania i czas utworzenia. Znacznik czasu logowania użytkownika wymaga konwersji z długiej liczby całkowitej. Pożyczyłem kod konwersji pochodzi od Richarda L. Muellera (www.rlmueller.net/Programs). Pełny skrypt Richarda również pobiera lokalną strefę czasową z rejestru i konwertuje czas z UCT na czas lokalny. Fajne
W rzeczywistości wszystkie te odpowiedzi nie sprawdzą się w przypadku ogromnych produkcyjnych środowisk AD.
Odpowiedzią jest użycie DirSync: https://support.microsoft.com/en-us/help/891995/how-to-poll-for-object-attribute-changes-in-active-directory-on-window
Oto implementacja Java: https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/experimental/ActiveDirectoryDirSyncControl.html
Zasadniczo ciągle pytasz AD o zmiany w oparciu o przyrostowy token.
"(&(objectClass=user)(whenCreated>=20101022083730.0Z))"do odfiltrowania komputerów i innych obiektów.