C# 获取广告组成员计数

C# 获取广告组成员计数,c#,.net,active-directory,C#,.net,Active Directory,我正在寻找一个本地C#,相当于PowerShell快速检索广告组成员数量的能力: $users = Get-ADGroupMember -Identity 'Group Name' $users.count 我找到的每一个C#引用都涉及到迭代组成员,并将它们添加到第二个列表中,然后您可以访问的“count”属性。在我采取行动之前,我想知道团队成员的数量,所以这并不理想。我还试图避免在C#中运行“Get-ADGroupMember”PowerShell cmdlet,因为我不必等待PowerSh

我正在寻找一个本地C#,相当于PowerShell快速检索广告组成员数量的能力:

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

我找到的每一个C#引用都涉及到迭代组成员,并将它们添加到第二个列表中,然后您可以访问的“count”属性。在我采取行动之前,我想知道团队成员的数量,所以这并不理想。我还试图避免在C#中运行“Get-ADGroupMember”PowerShell cmdlet,因为我不必等待PowerShell实例启动。

无论是在C#中还是在PowerShell中运行,都必须枚举成员以获得计数。没有存储计数

但是,
Get-ADGroupMember
的速度很慢,因为它为每个成员创建了一个新的对象,而该对象反过来会查找该对象的属性——这是每个成员的一个网络请求。如果你只想数一数的话,你不需要这个

组的
成员
属性只是一个字符串列表:每个成员的
区分名称
。你所需要做的就是数一数这些,而不是实际查找那些帐户

您可以使用,只需请求
成员
属性。然后数一数

(Get-ADGroup "Group Name" -Properties member).member.Count
现在,如果要查看嵌套组,事情会变得更复杂:如果组中的一个成员是另一个组,是否要查看内部?如果是这样的话,事情就会慢下来


如果你真的想走C#之路,我写了一篇关于如何查找组中的所有成员的文章,这取决于你的广告环境是如何设置的,以及你正在查看的组的性质:。然而,在许多情况下,我确实会查找会员帐户以获得详细信息。因此,您可能需要修改它。但如果您需要,我很乐意为您提供帮助。

Powershell是我通常使用的方式。问:你多久会提出一次这个问题?2秒和10秒到底有什么区别?您可能也会感兴趣。您说不想将成员读入列表并访问Count属性,但这正是您在PowerShell示例中所做的。请在你的问题中更详细地解释为什么你不想或不能这样做。非常好的观察-我没有想到!OP可以追求的另一个选择——如果他真的坚持使用C#——是WMI:但ADSI肯定比WMI好,PS可以说比两者都“好”。