我正在寻找与 PowerShell 快速检索 AD 组成员计数的能力等效的 native C#:
$users = Get-ADGroupMember -Identity 'Group Name'
$users.count
我找到的每个 C# 引用资料都涉及遍历组成员并将它们添加到辅助列表,然后您可以访问该列表的“计数”属性。我想在出于我的目的对其采取行动之前知道群组成员的数量,所以这并不理想。我还试图避免在 C# 中运行“Get-ADGroupMember”PowerShell cmdlet,这样我就不必等待 PowerShell 实例启动。
最佳答案
无论您是在 C# 还是 PowerShell 中执行此操作,都必须枚举成员以获得计数。计数未存储。
但是,Get-ADGroupMember
速度很慢,因为它为每个成员创建了一个新的 ADPrincipal
对象,而该对象又会查找该对象的属性 - 这是对每个成员的另一个网络请求。如果您想要的只是计数,则不需要它。
组的member
属性只是一个字符串列表:每个成员的distinguishedName
。您所需要做的就是数一数,而无需实际查找这些帐户。
您可以使用 Get-ADGroup
来做到这一点,只需请求 member
属性。然后得到计数。
(Get-ADGroup "Group Name" -Properties member).member.Count
现在,如果您想查看嵌套组,事情会变得更加复杂:如果该组的成员是另一个组,您要查看内部吗?如果是这样,那会减慢速度。
如果您确实想走 C# 之路,我写了一篇关于如何查找组的所有成员的文章,具体取决于您的 AD 环境的设置方式和您正在查看的组的性质:Find all the members of a group .但是,在许多情况下,我确实会查找成员(member)帐户以获取详细信息。所以你可能需要修改它。但如果您需要,我很乐意提供帮助。
关于c# - 获取 AD 组成员数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835267/