按用户名搜索整个Active Directory林

本文关键字:Active Directory 用户 搜索 | 更新日期: 2023-09-27 18:18:17

我的组织有由几个域名组成的活动目录林业。我需要写一个应用程序来查找用户的用户id。

        string username = "test_user_id";
        DirectoryEntry entry = new DirectoryEntry("LDAP://one_of_the_domain");
        DirectorySearcher dSearch = new DirectorySearcher(entry);
        dSearch.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + username + "))";
        SearchResult result = dSearch.FindOne();
        if (result != null)
        {
            var email = result.Properties["mail"];
            Console.WriteLine(email[0]);
        }

上面的示例代码将允许我在one_of_the_domain fine中搜索用户。但是,是否有一种方法可以在整个活动目录林中找到用户?

按用户名搜索整个Active Directory林

使用Forest类获取当前全局目录,然后您可以在其中获得对将搜索整个森林的DirectorySearcher的引用。

    var currentForest = Forest.GetCurrentForest();
    var gc = currentForest.FindGlobalCatalog();
    using (var userSearcher = gc.GetDirectorySearcher())
    {
      userSearcher.Filter = 
"(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + username + "))";
            SearchResult result = userSearcher.FindOne();
    }