在活动目录中查找组大小

发布于 2024-09-04 05:18:58 字数 365 浏览 8 评论 0原文

我有以下代码。我得到一个用户的目录条目(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 );
}

I have the following code. I get a directory entry for a user (strpath).
And then I get the groups where the user is listed.

How can I get the number of users in each group?

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 );
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄意 2024-09-11 05:18:58

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

查看 MSDN 文章管理 .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;
    }
}

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

If you're on .NET 3.5 (or can upgrade to it), there's a massively extended System.DirectoryServices.AccountManagement namespace that makes these jobs of managing user, groups and their memberships a whole lot easier.

Check out the MSDN article Managing Directory Security Principals in the .NET Framework 3.5 for an introduction to S.DS.AM.

You can get a user principal like this:

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;
    }
}

This way, you can enumerate all groups a given user has, and enumerating those groups, you can find out how many members (users and other groups) each group has.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文