You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell统计Active Directory组成员数量的脚本问题排查

修复PowerShell AD组成员计数错误

你的脚本中成员计数始终为0的原因是:$Membercount是未定义的变量,调用它的.count属性自然返回0。要获取每个AD组的成员总数,应该使用存储当前组成员的$Arrayofmembers变量的.Count属性。

另外原脚本存在一个潜在问题:全局的$Record是同一个对象,循环中修改它的属性会导致之前添加到$Table的条目被覆盖,建议每次循环创建新的有序字典。

以下是修正后的脚本:

$Groups = Get-AdGroup -Filter 'Name -notlike "Domain Computers"' | Select-Object -ExpandProperty Name
$Table = @()

foreach ($Group in $Groups) {
    $Arrayofmembers = Get-ADGroupMember -Identity $Group | Select-Object name, samaccountname
    # 如果只需要统计用户成员,添加Where-Object过滤:
    # $Arrayofmembers = Get-ADGroupMember -Identity $Group | Where-Object ObjectClass -eq 'user' | Select-Object name, samaccountname
    
    foreach ($Member in $Arrayofmembers) {
        $Record = [ordered]@{
            "Group Name"  = $Group
            "Name"        = $Member.name
            "Username"    = $Member.samaccountname
            "Membercount" = $Arrayofmembers.Count
        }
        $objRecord = New-Object PSObject -Property $Record
        $Table += $objRecord
    }
}

$Table | Export-Csv C:\MB\GROUP-D.CSV -NoTypeInformation

关键修正说明

  • 把未定义的$Membercount.count替换为$Arrayofmembers.Count,直接获取当前组的成员总数
  • 将$Record的定义移到成员循环内部,每次创建新的有序字典,避免条目内容被覆盖
  • 可选:添加Where-Object ObjectClass -eq 'user'过滤,只统计用户类型的成员(如果你的需求是仅统计用户)

内容的提问来源于stack exchange,提问作者user270488

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:40:48