在活动目录中查找组大小

时间:2010-06-07 18:56:25

标签: active-directory directoryservices

我有以下代码。我得到一个用户的目录条目(strpath)。 然后我得到列出用户的组。

如何获得每组中的用户数量?

DirectoryEntry myDE = new System.DirectoryServices.DirectoryEntry(strpath);
object obGroups = myDE.Invoke("Groups");
foreach (object ob in (IEnumerable)obGroups)
{
    DirectoryEntry obGpEntry = new DirectoryEntry(ob);
    GroupsListBox.Items.Add(obGpEntry.Name );
}

1 个答案:

答案 0 :(得分:1)

如果您使用的是.NET 3.5(或者可以升级到它),那么会有一个大规模扩展的System.DirectoryServices.AccountManagement命名空间,这使得管理用户,组及其成员资格的这些工作变得更加容易。

查看MSDN文章Managing Directory Security Principals in the .NET Framework 3.5,了解S.DS.AM的简介。

您可以获得这样的用户主体:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");

UserPrincipal user = UserPrincipal.FindByIdentity("some user name");

PrincipalSearchResult<Principal> userGroups = user.GetGroups();

foreach (Principal p in myGroups)
{
    GroupPrincipal gp = (p as GroupPrincipal);

    if (gp != null)
    {
        int memberCount = gp.Members.Count;
    }
}

这样,您可以枚举给定用户拥有的所有组,并枚举这些组,您可以找出每个组有多少成员(用户和其他组)。