Comment trouver de nouveaux comptes Active Directory créés au cours des 90 derniers jours?

13

Comment trouver de nouveaux comptes Active Directory créés au cours des 90 derniers jours?

quelqu'un sait-il qui faire cela? Je ne peux pas comprendre.

Merci d'avance.

Rob
la source

Réponses:

17

Pour la postérité, dsquery est conçu pour ce type de recherche. AD conserve un champ "whenCreated", ce qui facilite la recherche avec l'outil de votre choix.

dsquery * -filter "(whenCreated> = 20101022083730.0Z)"

Par exemple. Vous pouvez créer par programmation l'horodatage basé sur maintenant - 90 jours.

sysadmin1138
la source
8
+1 peut vouloir utiliser "(&(objectClass=user)(whenCreated>=20101022083730.0Z))"pour filtrer les ordinateurs et autres objets.
jscott
C'est extrêmement lent pour un répertoire actif avec une énorme quantité de comptes. Il semble faire un passage linéaire à travers les données.
Nicholas DiPiazza
8

Essayez ce qui suit pour extraire les utilisateurs créés au cours des 30 derniers jours.

Get-ADUser -Filter * -Properties whenCreated | Where-Object {$_.whenCreated -ge ((Get-Date).AddDays(-30)).Date}
user227969
la source
4
Bien que cette réponse fonctionne techniquement, elle n'est pas très efficace, en particulier dans les grands environnements AD avec des milliers d'utilisateurs. Vous interrogez essentiellement AD pour tous les utilisateurs, puis en mémoire sur votre machine locale en filtrant ceux qui répondent aux critères "où". Au lieu de cela, vous devez réellement utiliser l'argument Filter (ou LDAPFilter) pour filtrer les résultats avant qu'ils ne reviennent sur votre ordinateur et éviter complètement le tuyau Where.
Ryan Bolger
5

Une alternative à la version Powershell présentée ci-dessus, qui est beaucoup plus efficace car elle ne charge pas tous les utilisateurs en mémoire avant de les filtrer (vous devez effectuer le filtre directement sur l'applet de commande Get-ADUser et ne pas utiliser d'objet Where):

$now = ((Get-Date).AddDays(-90)).Date
Get-ADUser -Filter {whenCreated -ge $now}
Matthieu
la source
3

Utilisation de PowerShell et des outils Quest ActiveRoles pour AD (disponibles ici - http://www.quest.com/powershell/activeroles-server.aspx ),

Get-QADUser -CreatedAfter (Get-Date).AddDays(-90)

vous donnera une sortie vers la console ou partout où vous redirigerez tous les utilisateurs créés au cours des 90 derniers jours.

Christophe
la source
0

Voici un exemple d'un autre site de quelqu'un récupérant tous les comptes AD triés par date de création:

http://www.experts-exchange.com/Security/Operating_Systems_Security/Windows/Q_21117191.html

Vous pouvez obtenir la date de création de chaque compte dans Active Directory. Chaque objet AD a un attribut WhenCreated et WhenChanged. Vous pouvez vider ces attributs dans un fichier plat à l'aide de l'utilitaire LDIFDE, ou vous pouvez les vider dans un fichier délimité par des virgules à l'aide de CSVDE (les deux utilitaires sont fournis avec Windows 2000).

Voici la syntaxe pour vider les deux attributs des objets utilisateur dans une unité d'organisation appelée Phoenix dans un domaine appelé Company.com vers la console pour la visualisation (l'entrée entière doit être tapée sur une seule ligne):

ldifde -d ou = phoenix, dc = company, dc = com -l une fois créé, qui est changé -p onelevel -r "(ObjectCategory = user)" -f con

Si vous souhaitez enregistrer le vidage dans un fichier, changez le commutateur -f de con en un nom de fichier.

Le dernier horodatage de connexion utilise ce format: YYYYMMDDHHMMSS, avec l'heure indiquée en temps universel coordonné. Un horodatage de 20040115182937.0Z correspond au 15 janvier 2004 18:29:37 UCT.

USRSTAT est lent et le rapport que vous obtenez doit être fusionné avec le vidage LDIFDE. J'ai donc mis en place un script qui recherche des objets utilisateur sur chaque contrôleur de domaine, puis répertorie l'heure d'ouverture de session locale et l'heure de création. L'horodatage de la connexion utilisateur nécessite une conversion à partir d'un entier long. J'ai emprunté le code de conversion à Richard L. Mueller (www.rlmueller.net/Programs). Le script complet de Richard prend également le fuseau horaire local du Registre et convertit l'heure de l'UCT en heure locale. Nifty

PMGoldstein
la source
0

En fait, toutes ces réponses ne fonctionneront pas pour un énorme environnement de production AD.

La réponse est d'utiliser DirSync: https://support.microsoft.com/en-us/help/891995/how-to-poll-for-object-attribute-changes-in-active-directory-on-window

Voici une implémentation java de ceci: https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/experimental/ActiveDirectoryDirSyncControl.html

Fondamentalement, vous demandez continuellement à AD des modifications basées sur un jeton incrémentiel.

Nicholas DiPiazza
la source