Active Directory - 获取经理帐户(来自专有名称)

时间:2017-09-21 13:35:54

标签: c# 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 =员工,OU =英国,OU = CompantUsers,DC = MyDomain,DC = xxx,DC = zzzzz

CN = 经理名称 是全名,而不是LoginID / SAMAccountName (在我搜索MY AD条目时使用)。 ..那么我现在如何找到我的经理的AD条目

1 个答案:

答案 0 :(得分:0)

啊......当你知道要问的正确问题时谷歌知道答案......我不知道 CN ..... 字符串被称为 的distinguishedName

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();
}