Я пытаюсь выяснить компонент домена через службы Active Directory с помощью PrincipalContext.Найти компонент домена из PrincipalContext
Я создал PrincipalContext используя очень мало параметров:
PrincipalContext theContext = new PrincipalContext(ContextType.Domain);
theContext возвращается правильно. Я могу запросить много вещей и получить ожидаемые результаты. Но то, что я действительно хотел бы сделать, это эквивалент:
Console.WriteLine("Domain Component: " + theContext.Container);
Согласно MSDN, это только «Получает значение, указанное в параметре контейнера в конструкторе.» Поскольку я ничего не прошел, я ничего не получаю.
Но теоретический контейнер имеет компоненты домена, которые необходимы для любых выделенных имен, которые могут потребоваться для использования или создания. Я специально ищу, чтобы создать нового пользователя в организационном подразделении, которое, как я знаю, будет там. Но, поскольку я не знаю компонентов домена, я не могу создать отличительное имя. Я не видел поддержки относительных путей.
Лучшим вариантом, который я решил, является поиск любого пользователя, а затем получение его выдающегося имени и отрубание части «постоянного тока».
var searchUser = new UserPrincipal(theContext);
var searcher = new PrincipalSearcher(searchUser);
Principal aUser = searcher.FindOne();
if (aUser != null)
{
string dn = aUser.DistinguishedName;
Console.WriteLine(dn.Substring(dn.IndexOf("dc=", StringComparison.InvariantCultureIgnoreCase)));
}
Это похоже на плохой взлом; слишком много может пойти не так. Я надеюсь, что есть что-то лучше. У кого-нибудь есть идея?
Это подействовало. Благодарю. –