代码之家  ›  专栏  ›  技术社区  ›  iBiryukov

在Active Directory中查找组大小

  •  0
  • iBiryukov  · 技术社区  · 16 年前

    我有以下代码。我得到一个用户的目录条目(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 回复  |  直到 16 年前
        1
  •  1
  •   marc_s MisterSmith    16 年前

    如果你在.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;
        }
    }
    

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