按用户名搜索整个Active Directory林

har*_*ang 1 c# active-directory

我的组织拥有由多个域名组成的活动目录林业.我需要编写一个应用程序来按用户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]);
        }
Run Code Online (Sandbox Code Playgroud)

上面的示例代码将允许我在one_of_the_domain罚款内搜索用户.但有没有办法在整个活动目录林中找到用户?

Cam*_*uce 5

使用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();

    }
Run Code Online (Sandbox Code Playgroud)