2008-11-27 5 views
8

Kann mir bitte jemand helfen, alle Domänen in Active Directory zu bekommen. Ich habe viele Male versucht, aber alle Programme listet nur die aktuelle Arbeitsdomäne auf.So erhalten Sie eine Liste aller Domänen in Active Directory mit C#

Wie kann ich das tun?

+0

ich diesen Link neulich vorgemerkt. Es bietet einen Ansatz, um LDAP-Abfragen zu verwenden. Sollte an ADSI angepasst werden können. http://itchanged.com/FindingAllDomainsInAnActiveDirectoryForest.html –

Antwort

1

Mit DirectorySearcher können Sie die Struktur eines Active Directory verbinden und lesen, einschließlich der Struktur (Organisationseinheiten, Gruppen, Benutzer, Computer, Domänencontroller). Um eine Verbindung zu einer anderen Domäne herzustellen, benötigen Sie die Anmeldeinformationen dieser anderen Domäne. Wir hatten Probleme beim Verbinden mit einer anderen Domäne von einer Maschine, die zu einer anderen Domäne als der Zieldomäne gehört. Ich bin auch neugierig, ob das überhaupt möglich ist.

9
Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "yourDomain", "username", "password")); 

Forest forest = domain.Forest; 

DomainCollection domains = forest.Domains; 

Das obige verwendet den Namespace System.DirectoryServices.ActiveDirectory. Dadurch erhalten Sie eine Domänensammlung, die alle Domänen enthält, die sich in derselben Gesamtstruktur wie Ihre angegebene Domäne befinden.

4

Ich hatte Probleme, den Code von LeeMobile in meinem Fall zu verwenden, weil er versuchte, den aktuellen Domänenkontext meiner Anwendung während der Ausführung von forest.Domains zu finden. Ich konnte es umgehen, indem ich so etwas machte.

Forest forest = Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, "yourForestDomain", "username", "password")); 
DomainCollection domains = forest.Domains; 
0

Sie könnten auch System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest() verwenden. Domains

var domains = Forest.GetCurrentForest().Domains.Cast<Domain>(); 
foreach (var domain in domains) 
{ 
    Console.WriteLine(domain.Name); 
} 
Verwandte Themen