私は、指定された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を使用してクエリを適用する方法がありません。
これを行う方法についてのアイデアはありますか?