Risposte:
Per i posteri, dsquery è progettato per questo tipo di ricerca. AD mantiene un campo 'whenCreated', che semplifica la ricerca con il tuo strumento preferito.
dsquery * -filter "(whenCreated> = 20101022083730.0Z)"
Come esempio. È possibile creare a livello di programmazione il timestring in base a ora - 90 giorni.
Prova quanto segue per estrarre gli utenti creati negli ultimi 30 giorni.
Get-ADUser -Filter * -Properties whenCreated | Where-Object {$_.whenCreated -ge ((Get-Date).AddDays(-30)).Date}
Un'alternativa alla versione di Powershell mostrata sopra, che è molto più efficiente perché non carica tutti gli utenti in memoria prima di filtrarli (è necessario eseguire direttamente il filtro sul cmdlet Get-ADUser e non utilizzare un Where-Object):
$now = ((Get-Date).AddDays(-90)).Date
Get-ADUser -Filter {whenCreated -ge $now}
Utilizzando PowerShell e gli strumenti Quest ActiveRoles per AD (disponibili qui - http://www.quest.com/powershell/activeroles-server.aspx ),
Get-QADUser -CreatedAfter (Get-Date).AddDays(-90)
ti darà l'output sulla console o ovunque tu reindirizzi di tutti gli utenti creati negli ultimi 90 giorni.
Ecco un esempio da un altro sito di qualcuno che recupera tutti gli account AD ordinati per data di creazione:
http://www.experts-exchange.com/Security/Operating_Systems_Security/Windows/Q_21117191.html
È possibile ottenere la data di creazione per ciascun account da Active Directory. Ogni oggetto AD ha un attributo WhenCreated e WhenChanged. È possibile scaricare questi attributi in un file flat utilizzando l'utilità LDIFDE oppure scaricarli in un file delimitato da virgole utilizzando CSVDE (entrambe le utilità sono fornite con Windows 2000).
Ecco la sintassi per scaricare i due attributi per gli oggetti utente in un'unità organizzativa denominata Phoenix in un dominio chiamato Company.com alla console per la visualizzazione (l'intera voce deve essere digitata come una riga singola):
ldifde -d ou = phoenix, dc = company, dc = com -l whreatreated, whenchanged -p onelevel -r "(ObjectCategory = user)" -f con
Se si desidera salvare il dump in un file, modificare l'opzione -f da con a un nome file.
L'ultimo timestamp di accesso utilizza questo formato: AAAAMMGGHHMMSS, con l'ora indicata in Tempo coordinato universale. Un timestamp 20040115182937.0Z corrisponde al 15 gennaio 2004 18:29:37 UCT.
USRSTAT è lento e il report che si ottiene deve essere unito al dump LDIFDE. Quindi, ho messo insieme uno script che cerca gli oggetti utente in ciascun controller di dominio, quindi elenca l'ora di accesso locale e l'ora di creazione. Il timestamp di accesso dell'utente richiede la conversione da un numero intero lungo. Ho preso in prestito il codice di conversione che viene da Richard L. Mueller (www.rlmueller.net/Programs). Lo script completo di Richard prende anche il fuso orario locale dal registro e converte l'ora dall'UCT all'ora locale. elegante
In realtà tutte queste risposte non funzioneranno per ambienti AD di produzione enormi.
La risposta è usare DirSync: https://support.microsoft.com/en-us/help/891995/how-to-poll-for-object-attribute-changes-in-active-directory-on-window
Ecco un'implementazione java di questo: https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/experimental/ActiveDirectoryDirSyncControl.html
Fondamentalmente chiedete continuamente ad AD le modifiche in base a un token incrementale.
Puoi farlo abbastanza facilmente con dsquery
"(&(objectClass=user)(whenCreated>=20101022083730.0Z))"
per filtrare computer e altri oggetti.