Как получить список всех доменов в Active Directory, используя C # - PullRequest
8 голосов
/ 27 ноября 2008

Может кто-нибудь, пожалуйста, помогите мне получить все домены в Active Directory. Я пробовал много раз, но все программы перечисляют только текущий рабочий домен.

Как я могу это сделать?

Ответы [ 4 ]

10 голосов
/ 27 ноября 2008
Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "yourDomain", "username", "password"));

Forest forest = domain.Forest;

DomainCollection domains = forest.Domains;

Выше используется пространство имен System.DirectoryServices.ActiveDirectory. Это даст вам коллекцию доменов, содержащую все домены, которые находятся в том же лесу, что и данный домен.

4 голосов
/ 27 мая 2011

У меня были некоторые проблемы с получением кода LeeMobile для работы в моем случае, потому что он пытался найти текущий контекст домена моего приложения при запуске forest.Domains. Я смог обойти это, сделав что-то вроде этого.

Forest forest = Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, "yourForestDomain", "username", "password"));
DomainCollection domains = forest.Domains;
1 голос
/ 27 ноября 2008

Используя DirectorySearcher, вы можете подключить и прочитать структуру одного Active Directory, включая структуру (организационные единицы, группы, пользователи, компьютеры, контроллеры домена). Чтобы подключиться к другому домену, вам понадобятся учетные данные этого другого домена. У нас были проблемы с подключением к другому домену с компьютера, который принадлежит другому домену, чем целевой. Мне также любопытно, если это вообще возможно.

0 голосов
/ 29 июня 2016

Вы также можете использовать System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest (). Домены

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