Как получить список всех доменов в Active Directory с помощью С#

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

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


person Arun    schedule 27.11.2008    source источник
comment
Я добавил эту ссылку в закладки на днях. Он предлагает способ сделать это с помощью запросов LDAP. Должен быть адаптирован к ADSI. itchhanged.com/FindingAllDomainsInAnActiveDirectoryForest.html   -  person    schedule 11.01.2010


Ответы (4)


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

Forest forest = domain.Forest;

DomainCollection domains = forest.Domains;

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

person LeeMobile    schedule 27.11.2008

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

Forest forest = Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, "yourForestDomain", "username", "password"));
DomainCollection domains = forest.Domains;
person Paul    schedule 27.05.2011

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

person Sergiu Damian    schedule 27.11.2008

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

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