2014-07-09 4 views
0

Nous avons un grand répertoire LDAP dont nous renvoyons tous les utilisateurs. Nous parcourons la liste des utilisateurs, et comparons ce que nous avons sauvegardé localement pour trouver ceux qui n'existent plus, ou qui sont nouveaux, puis les créer/les supprimer localement.Recherche DirectoryServices pour renvoyer une liste d'utilisateurs modifiés par date

Le problème est que cette opération prend HOURS pour terminer. Je pense que la solution à ce problème serait de définir une requête de recherche plus spécifique pour les services d'annuaire et de ne renvoyer que les utilisateurs qui ont été modifiés au cours des dernières 24 heures (ou à chaque fois qu'il a été exécuté). Malheureusement, j'ai de la difficulté à trouver quelle propriété utiliser pour rendre la requête de recherche plus spécifique.

J'ai regardé this list of available properties, mais tout ce que je peux voir qui pourrait fonctionner est 'ms-DFS-Last-Modified-v2', cependant, je ne sais pas comment l'utiliser.

D'autres idées?

Le code que nous utilisons pour la recherche est actuellement ci-dessous:

  PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "MYDOMAIN", "dc=MYDOMAIN,dc=co,dc=za"); 
      UserPrincipal theuser = new UserPrincipal(domainContext); 

      theuser.Name = "*"; 

      // create a principal searcher for running a search operation 
      PrincipalSearcher pS = new PrincipalSearcher(theuser); 

      // assign the query filter property for the principal object 
      pS.QueryFilter = theuser; 

      // run the query 
      PrincipalSearchResult<Principal> theresults = pS.FindAll(); 
      retUsers = new List<ActiveDirectoryUser>(); 
      List<UserPrincipal> copyUsers = new List<UserPrincipal>(); 
      copyUsers = theresults.OfType<UserPrincipal>().Where(userresult => userresult.EmailAddress != null).ToList(); 


      foreach (UserPrincipal result in copyUsers) 
      { 
       ... process users. 
      } 

Répondre

0

Cela a été résolu en utilisant ces propriétés de filtre LDAP:

modification: 10/07/2014 08:35:17

modifyTimeStamp: 10/07/2014 08:35:17

Qui ont été trouvés en suivant les instructions de this post.

+0

-> J'ai des exigences presque similaires, c'est un vieux post mais pouvez-vous poster quelques exemples? comment utiliser les requêtes C# AD pour récupérer des éléments modifiés depuis la date ? En outre, renvoie-t-il également les éléments supprimés? – user2107373

+0

La requête est créée en fonction des filtres de propriétés que vous souhaitez utiliser. Quelque chose comme 'dirSearcher.Filter =" (& (PROPERTYNAME = "+ VALUE +")) ";'. Remplacez PROPERTYNAME par la propriété AD réelle, puis évidemment par la valeur que vous fournissez. Lisez https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx –

0

Vous devez utiliser des filtres LDAP, et trouver quelques examples assez facile. Je ne suis pas sûr de la syntaxe du filtre pour les dates. Je voudrais vérifier documentation pour cela.

Editer: Vous pouvez obtenir la liste des attributs en interrogeant le schema. Malheureusement, il n'y a pas beaucoup d'exemples dans la documentation. Jetez un oeil à questions about Active Directory attribute listings pour des exemples.

+0

Le lien de documentation que vous avez fourni ne fournit aucun exemple de ce dont j'ai besoin :( –

+0

Qu'en est-il de l'exemple Avez-vous essayé d'utiliser DirectorySearcher? – ziya

+0

Plus je recherche de requêtes de filtre LDAP plus je réalise à quel point la documentation officielle –

Questions connexes