0

私は、指定されたADグループのメンバーを照会するための良い方法を見つけるのに苦労してきました。

グループを見つけたり、基準に基づいてユーザーにクエリを実行したりすることに問題はありません。

現在私は持っています

 PrincipalContext context = new PrincipalContext(ContextType.Domain, _domain, ADServerUser, ADServerPassword);
 UserPrincipal userPrinciple = new UserPrincipal(context);
 userPrinciple.GivenName = "stringToSearchForFirstName";
 userPrinciple.Name = "stringToSearchForUserName";
 userPrinciple.Surname = "stringToSearchForLastName";
 PrincipalSearcher srch = new PrincipalSearcher(new UserPrincipal(context));                    
 srch.QueryFilter = userPrinciple;
 var result = srch.FindAll();

これにより、必要なすべてのユーザーが得られますが、グループが除外されるわけではありません。

GroupPrincipleオブジェクトをプリンシパル検索と一緒に使用できますが、ユーザーをフィルターで絞り込むことができません。

UserPrincipalとGroupPrincipalの両方を適用して、返された結果をGroupパラメーターとUserパラメーターの両方でフィルター処理できるようにする方法が必要です。

linq where句を使用して、ユーザーがグループに属しているかどうかを確認するために一致を試みましたが、すべてのユーザーを取得すると、クエリがタイムアウトします。全体的に理にかなっています。

ただし、グループをクエリアウトすると、principalSearcherを使用してクエリを適用する方法がありません。

これを行う方法についてのアイデアはありますか?

4

2 に答える 2

2
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, _domain);
// get the AD Group you are wanting to Query
GroupPrincipal group = GroupPrincipal.FindByIdentity("cn=YourGroupname");
foreach(Principal p in group.Members)
{
    //do what ever coding you need to do here            
}
于 2013-02-07T23:12:04.137 に答える
1

私の調査から、プリンシパルオブジェクトを使用してグループパラメーターとユーザーパラメーターの両方でフィルター処理できるようにすることは不可能であると結論付けました。この問題を解決するには、ADへのクエリ文字列メソッドの使用に戻す必要がありました。

于 2013-02-17T06:43:04.093 に答える