0
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); 

       } 
      } 

У меня есть код, аналогичный приведенному выше, который выполняет поиск в Active Directory для информации о пользователе с использованием класса PrincipalContext.Как найти Глобальный каталог (весь лес) с использованием PrincipalContext

Как вы можете видеть, я проходил в доменеName во время поиска. Как я могу изменить этот мир кода, чтобы вместо этого искать весь лес (т. Е. Глобальный каталог), но все же использовать класс PrincipalContext?

Я не могу найти рабочий пример, который использует класс PrincipalContext для поиска в глобальном каталоге.

Я видел это сообщение How to search for users in Global Catalog within AD forest with multiple trees, но плакат, кажется, предполагает, что они не нашли решение, которое использует класс PrincipalContext, им пришлось переключиться обратно на DirectorySearcher.

Есть ли образец кода класса PrincipalContext, который демонстрирует поиск во всем лесу (Глобальный каталог)?

ответ

0

Хорошо, я получил его работу. Мне просто пришлось изменить свой код, как показано ниже.

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

       } 
      }