如何使用 PrincipalContext 搜索全局目录(整个林)

How to search Global Catalog (whole forest) using PrincipalContext

 myUserList AppUsers = new myUserList();    
 using (PrincipalContext pcxt = new PrincipalContext(ContextType.Domain, domainName))
            {
                UserPrincipal User = new UserPrincipal(pcxt);
                User.EmailAddress = emailString;

                PrincipalSearcher srch = new PrincipalSearcher(User);
                foreach (var principal in srch.FindAll())
                {
                    var p = (UserPrincipal)principal;
                    myUserRow User = AppUsers.NewUsersRow();
                    User.FirstName = p.GivenName;
                    User.LastName = p.Surname;
                    User.Email = p.EmailAddress;
                    AppUsers.AddUsersRow(User);

                }
            }

我有类似于上面的代码,使用 PrincipalContext class 在 Active Directory 中搜索用户信息。

如您所见,我在搜索过程中传入了域名。 我如何修改代码的和平以搜索整个林(即全局目录)但仍然使用 PrincipalContext class?

我似乎找不到使用 PrincipalContext class 进行全局目录搜索的工作示例。

我看过这个 post How to search for users in Global Catalog within AD forest with multiple trees 但是 poster 似乎暗示他们没有找到使用 PrincipalContext class 的解决方案,他们不得不切换回到目录搜索器。

是否有任何 PrincipalContext class 代码示例演示在整个林(全局目录)中进行搜索?

好的,我成功了。我只需要像下面这样更改我的代码。

 myUserList AppUsers = new myUserList();    
 using (PrincipalContext pcxt = new PrincipalContext(ContextType.Domain,  "my-global-catalogue-server.subdomain.domain.com:port", "DC=subdomain,DC=domain,DC=com"))
            {
                UserPrincipal User = new UserPrincipal(pcxt);
                User.EmailAddress = emailString;

                PrincipalSearcher srch = new PrincipalSearcher(User);
                foreach (var principal in srch.FindAll())
                {
                    var p = (UserPrincipal)principal;
                    myUserRow User = AppUsers.NewUsersRow();
                    User.FirstName = p.GivenName;
                    User.LastName = p.Surname;
                    User.Email = p.EmailAddress;
                    AppUsers.AddUsersRow(User);

                }
            }