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.
}
-> 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
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 –