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

PowerShell中Get-ADPrincipalGroupMembership.Count结果<1时无输出问题

PowerShell统计AD用户组数量时单主组用户Count无输出的问题解决

问题原因

当用户仅属于主组时,Get-ADPrincipalGroupMembership返回单个组对象,经过Select-Object name处理后得到的是单个自定义对象而非数组。在PowerShell中,单个对象默认不具备Count属性(低版本PowerShell表现更明显),因此脚本里$groups.count无输出;而手动执行时,括号包裹的表达式触发了PowerShell的隐式数组处理逻辑,自动将单个对象视为数组,因此能返回1。

解决方法

强制将命令结果转为数组,确保无论返回单个还是多个对象,都能正确获取Count值。修改后的代码如下:

foreach ($user in $users)
{
    $SAM = $user.SamAccountName
    # 用@()强制将结果转为数组
    $groups = @(Get-ADPrincipalGroupMembership -Identity $SAM | Select-Object name)
    $SAM
    $groups.count
}

如果不需要单独提取name属性,也可以简化为:

foreach ($user in $users)
{
    $SAM = $user.SamAccountName
    $groups = @(Get-ADPrincipalGroupMembership -Identity $SAM)
    $SAM
    $groups.count
}

补充说明

PowerShell 3.0及以上版本对单个对象的Count访问有优化(会默认返回1),但通过管道生成的自定义对象仍可能出现此问题。强制转为数组是兼容性最强的写法,可覆盖所有PowerShell版本场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:25:19