[Active Directory] méthode FindAll() trop limitée
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:
Code:
1 2 3 4 5
| DirectorySearcher searcher = new DirectorySearcher(Ldap);
Int32 total = 0;
searcher.SizeLimit = 40000;
SearchResultCollection collection = searcher.FindAll();
total = collection.Count; |
"total" est toujours égal à 7000.
Pour information si je fais un filtre de ce genre et que j'additionne les résultats :
Code:
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;
} |
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 #, !, ...)
Quelqu'un aurait-il une solution?
Merci d'avance,
Rastamath69