5

だから私は、ADグループのメンバーシップを再帰的に列挙することで何かをしようとしています。現時点では...

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "mine.domain.com");
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "myADGroup");
if (grp != null)
{
    foreach (Principal p in grp.GetMembers(true))
    {
        Console.WriteLine(p.Name);
    }
}

もちろん、これはすべてうまく機能します。グループのメンバーであるすべてのユーザーと、その中にネストされているグループのメンバーであるすべてのユーザーがリストされますが、ネストのレベルが深くてもかまいません。これは素晴らしいことです。

私が本当に必要としているのは、ユーザーがこの小さなネストのどのグループから来たかを知ることです。

GRP-MainProject
   -- GRP-Producers
   -- GRP-Artists
     -- UserA

GRP-MainProject に対して現在のクエリを実行すると、UserA が返されます。ユーザーと、GRP-MainProject のメンバーシップを継承したのが GRP-Artists であるという事実を返すにはどうすればよいですか?

UserA は、重要な場合に備えて、約 40 のグループのメンバーです。編集 - ユーザーが複数のネストされたグループのグループのメンバーシップを持つ可能性があることに注意してください。

任意の考えをいただければ幸いです。

4

2 に答える 2