1
 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 クラスを使用して Active Directory でユーザー情報を検索する上記のようなコードがあります。

ご覧のとおり、検索中に domainName を渡します。この平和なコードを変更して、代わりにフォレスト全体 (つまり、グローバル カタログ) を検索し、引き続き PrincipalContext クラスを使用するにはどうすればよいですか?

PrincipalContext クラスを使用してグローバル カタログ検索を実行する実際の例が見つからないようです。

複数のツリーを持つ AD フォレスト内のグローバル カタログでユーザーを検索する方法の投稿を見たことがありますが、ポスターは PrincipalContext クラスを使用するソリューションが見つからなかったことを示唆しているようで、DirectorySearcher に戻す必要がありました。

フォレスト全体 (グローバル カタログ) での検索を示す PrincipalContext クラスのコード サンプルはありますか?

4

1 に答える 1

2

わかりました、私はそれを働かせました。以下のようにコードを変更する必要がありました。

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

                }
            }
于 2016-07-14T14:14:03.040 に答える