获取广告组成员计数

时间:2019-02-22 21:13:05

标签: c# .net active-directory

我正在寻找与PowerShell能够快速检索AD组成员数量的功能等效的本机C#:

$users = Get-ADGroupMember -Identity 'Group Name'
$users.count

我为C#找到的每个参考都涉及遍历组成员并将其添加到辅助列表中,然后您可以访问其“ count”属性。我想知道之前的小组成员人数,为此我对它采取了行动,因此这不是理想的选择。我还试图避免在C#中运行“ Get-ADGroupMember” PowerShell cmdlet,而不必等待PowerShell实例启动。

1 个答案:

答案 0 :(得分:2)

无论您是使用C#还是PowerShell,都必须枚举成员才能计数。计数未存储。

但是,Get-ADGroupMember很慢,因为它正在为每个成员创建一个新的ADPrincipal对象,而该对象又会查找该对象的属性-这是每个成员的另一个网络请求。如果您想要的只是计数,则不需要。

组的member属性只是一个字符串列表:每个成员的distinguishedName。您所需要做的就是计算这些,而无需实际查找这些帐户。

您可以使用Get-ADGroup进行操作,只需询问member属性即可。然后计数。

(Get-ADGroup "Group Name" -Properties member).member.Count

现在,如果您要查看嵌套的组,事情会变得更加复杂:如果该组的成员是另一个组,您是否想查看内部?如果是这样,那将会减慢速度。

如果您确实想走C#的道路,我写了一篇文章,介绍如何查找组中的所有成员,具体取决于您的AD环境的设置方式以及所查看组的性质:{ {3}}。但是,在很多情况下,我确实要查找会员帐户以获取详细信息。因此,您可能需要对其进行修改。但如果您需要,我很乐意提供帮助。