Active Directory — получить учетную запись менеджера (из отличительного имени)

Я пытаюсь получить учетную запись менеджера для учетной записи пользователя в активном каталоге.

Вот код, который у меня есть..

using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;


DirectoryContext directoryContext = new  DirectoryContext(DirectoryContextType.Domain, "MyDomain");
Domain domain = Domain.GetDomain(directoryContext);

// Find MY directory Entry
DirectorySearcher search = new DirectorySearcher(domain.GetDirectoryEntry())
{
    Filter = String.Format("(SAMAccountName={0})", "<my user id>")
};
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("mail");
search.PropertiesToLoad.Add("manager");
DirectoryEntry userAccount = search.FindOne()?.GetDirectoryEntry();

Как видите, есть свойство под названием manager, которое запрашивается и возвращается как

CN=имя менеджера,OU=Employee,OU=United Kingdom, OU=CompantUsers, DC=MyDomain, DC=xxx,DC=zzzzz

CN=Имя менеджера – это полное имя, а не LoginID/SAMAAccountName (используется при поиске записи МОЯ ОБЪЯВЛЕНИЕ... поэтому как мне теперь найти запись AD для моего менеджера


person Chris Hammond    schedule 21.09.2017    source источник


Ответы (1)


Аааа... Когда вы знаете, какой вопрос задать, Google знает ответ... Я не знал, что строка CN..... известна как отличительное имя

if (userAccount.Properties["manager"].Value != null)
{
  DirectorySearcher search2 = new DirectorySearcher(domain.GetDirectoryEntry())
  {
    Filter = string.Format("(distinguishedName={0})", userAccount.Properties["manager"].Value)
  };
  search2.PropertiesToLoad.Add("displayName");
  search2.PropertiesToLoad.Add("mail");
  search2.PropertiesToLoad.Add("manager");
  DirectoryEntry mgrAcc = search2.FindOne()?.GetDirectoryEntry();
}
person Chris Hammond    schedule 21.09.2017