Bonjour à tous,
Je travaille à l'heure actuelle sur une base Active Directory contenant un peu plus de 30000 utilisateurs.
Je dois arriver à parcourir tous ces utilisateurs afin de leur faire subir des modifications qui peuvent être différentes pour chacun d'entre eux suivant divers critères.
Mon soucis, est que lorsque j'utilise la méthode FindAll() de mon objet DirectorySearcher, la collection se limite à 7000 objets et pas un de plus...J'ai essayé de regarder du coté des différents paramètres de l'objet pour mieux contrôler sa taille comme l'attribut ".SizeLimit", mais cela ne change rien...
Voici un résumé de mon code:
"total" est toujours égal à 7000.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DirectorySearcher searcher = new DirectorySearcher(Ldap); Int32 total = 0; searcher.SizeLimit = 40000; SearchResultCollection collection = searcher.FindAll(); total = collection.Count;
Pour information si je fais un filtre de ce genre et que j'additionne les résultats :
Dans ce cas, "total" contient bien les 30000 utilisateurs. (le problème de cette solution est que je passe outre tous les login spécifiques qui commencent par des #, !, ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 List<String> MaListe = new List<String>(); MaListe.Add("A"); ... //MaListe contient toutes les lettres de l'alphabet MaListe.Add("Z"); foreach(String lettre in MaListe) { searcher.Filter = "(&(objectCategory=user)(SAMAccountName=" + lettre + "*))"; SearchResultCollection collection = searcher.FindAll(); total += collection.Count; }
Quelqu'un aurait-il une solution?
Merci d'avance,
Rastamath69
Partager