如何在没有在Active Directory中显示直接报告的情况下查找具有直接报告的人员?

时间:2014-09-18 11:14:55

标签: c# active-directory ldap

我正在尝试查找活动目录中有人向他们报告的所有用户,但我找不到任何代码示例,这些示例允许我在搜索中排除没有任何直接报告的人。

有人可以帮我这个吗? LDAP完全让我困惑。

2 个答案:

答案 0 :(得分:1)

以下是我如何解决类似问题的示例。我希望这会有所帮助。

DirectorySearcher searcher;
SearchResultCollection results;

searcher = new DirectorySearcher();
searcher.Filter = "(&(objectClass=user)(objectCategory=person))";
searcher.PropertiesToLoad.Add("DirectReports");
searcher.PropertiesToLoad.Add("mail");
searcher.SearchRoot = utilityDomain;

Dictionary<string, string> managerEmailAddresses = new Dictionary<string, string>();

using (searcher)
{
    results = searcher.FindAll();

    foreach (SearchResult result in results)
    {
        if (result.Properties["DirectReports"].Count > 0)
        {
            DirectoryEntry emp = result.GetDirectoryEntry();

            String mail = "";
            if (emp.Properties["mail"].Count > 0)
            {
                mail = emp.Properties["mail"][0].ToString();
                string userName;
                userName= mail.Split('@')[0];

                managerEmailAddresses.Add(userName, mail);
             }
         }
    }
    return managerEmailAddresses;
}

答案 1 :(得分:0)

你试过这样的过滤器吗? (&(objectCategory=person)(objectClass=user)(directReports=*))