Wenn eine Organisationseinheit 3000 Benutzer enthält, wie kann DirectorySearcher verwendet werden, um alle zu finden?

8

Ich benutze diesen Code:

%Vor%

Jedes Mal gibt es nur 1000 Benutzer zurück, aber es gibt 3000 Benutzer in dieser Organisationseinheit.

Wie kann ich alle finden?

    
cciikk 17.07.2011, 09:32
quelle

2 Antworten

9

Wenn Sie auf .NET 3.5 oder neuer sind, sollten Sie den PrincipalSearcher und einen "query-by-example" Prinzipal für Ihre Suche auschecken:

%Vor%

Wenn Sie dies noch nicht getan haben - lesen Sie unbedingt den MSDN-Artikel Verwalten von Verzeichnissicherheitsprinzipalen in .NET Framework 3.5 , die zeigt, wie man die neuen Funktionen in System.DirectoryServices.AccountManagement

optimal nutzt

Aktualisierung:

Natürlich können Sie je nach Bedarf andere Eigenschaften für den von Ihnen erstellten Benutzer-Prinzipal "query-by-example" angeben:

  • Surname (oder Nachname)
  • DisplayName (normalerweise: Vorname + Leerzeichen + Nachname)
  • SAM Account Name - Ihr Windows / AD-Kontoname
  • User Principal Name - Ihr "[email protected]" -Stilname

Sie können eine der Eigenschaften für UserPrincipal angeben und diese als "query-by-example" für Ihre PrincipalSearcher verwenden.

Update # 2: Wenn Sie nur innerhalb einer bestimmten Organisationseinheit suchen möchten, können Sie diese Organisationseinheit im Konstruktor von PrincipalContext definieren.

    
marc_s 17.07.2011, 09:50
quelle
6

Sie müssen die Eigenschaft DirectorySearcher.PageSize festlegen in der Lage, alle Ergebnisse zurückzugeben. Zum Beispiel:

%Vor%

Andernfalls wird die Anzahl der zurückgegebenen Elemente durch das Limit auf der Serverseite begrenzt, das standardmäßig 1000 ist. Es gibt auch etwas namens SizeLimit, das Sie festlegen können, wenn Sie die Anzahl der zurückgegebenen Elemente explizit begrenzen möchten. Wenn sowohl SizeLimit als auch PageSize 0 sind (Standardwerte), wird das serverseitige Standard-SizeLimit verwendet. Ein bisschen kontraintuitiv meiner Meinung nach.

Wenn Sie alle die Ergebnisse zurückgeben möchten, können Sie PageSize nur auf einen Wert ungleich null und SizeLimit auf 0 setzen.

    
Can Gencer 17.07.2011 09:38
quelle