Vì vậy, tôi đang cố gắng để có được một cái gì đó đi với liệt kê thành viên nhóm AD đệ quy. Tại thời điểm này, tôi có ...C# - GroupPrincipal.GetMembers (đúng) - nhóm nào?
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);
}
}
Tất cả điều này đều tuyệt vời, tất nhiên. Nó liệt kê mọi người dùng là thành viên của nhóm và tất cả người dùng là thành viên của nhóm được lồng vào bên trong, tuy nhiên nhiều cấp độ lồng nhau có thể sâu hơn. Điều đó thật tuyệt.
Điều tôi thực sự cần biết là nhóm nào trong số ít người dùng làm tổ này.
GRP-MainProject
-- GRP-Producers
-- GRP-Artists
-- UserA
Chạy truy vấn hiện tại của tôi chống lại GRP-MainProject sẽ trở lại UserA - làm thế nào tôi nên đi về trả lại người dùng và thực tế là nó là GRP-Nghệ sĩ mà ông thừa hưởng thành viên của GRP-MainProject từ đâu?
UserA là thành viên của khoảng 40 nhóm hoặc hơn, trong trường hợp quan trọng. Chỉnh sửa - đáng nhắc đến người dùng có thể có tư cách thành viên của nhóm từ nhiều nhóm lồng nhau.
Bất kỳ suy nghĩ nào cũng sẽ được đánh giá cao.
Tôi nghĩ rằng bạn đã biết nó trong dòng này foreach (Chính p trong grp.GetMembers (true)) chỉ cần đầu ra grp cùng với p.Name của bạn – Raymund
Khi tôi xuất grp, nó chỉ xuất ra "GRP-MainProject" làm nhóm cho UserA, trong khi tôi cần trả lại GRP-Nghệ sĩ làm nhóm người dùng. Bởi vì giá trị bool cho GetMembers là đúng, đầu ra đệ quy của nó chỉ đếm tất cả người dùng bên trong nó như là trong GRP-MainProject, bất kể thành viên nhóm lồng nhau thực tế. – dotalchemy