如何判断指定SAM账户名的AD用户是否属于任何组(PowerShell)
AD用户组存在性判断的PowerShell方案
核心判断条件(直接可用)
假设你已经把输入的SAM账户名存在变量$samAccountName中,以下是判断该用户是否属于任何组的布尔值逻辑:
# 先获取用户对象并加载MemberOf属性(必须加-Properties参数,默认不返回该属性) $targetUser = Get-ADUser -Identity $samAccountName -Properties MemberOf # 判断是否有非主组的所属组 $hasAssignedGroups = $null -ne $targetUser.MemberOf -and $targetUser.MemberOf.Count -gt 0
把它放到你的if校验里:
if (-not $hasAssignedGroups) { Write-Host "提示:该用户没有加入任何额外组,请重新输入用户名!" # 这里执行你已写好的重新获取输入的逻辑 }
关键说明
- 为什么要加
-Properties MemberOf:Get-ADUser默认只返回用户的基础属性,MemberOf(用户所属的组,不含主组)属于扩展属性,必须显式指定才能获取到。 - 关于主组的特殊情况:默认每个AD用户都会加入
Domain Users作为主组,如果你想把主组也算入判断,可以用下面的逻辑:
$targetUser = Get-ADUser -Identity $samAccountName -Properties MemberOf, PrimaryGroupID # 获取主组对象 $primaryGroup = Get-ADGroup -Filter "GroupID -eq $($targetUser.PrimaryGroupID)" # 只要存在主组或额外组,就判定为有组 $hasAnyGroups = ($null -ne $targetUser.MemberOf -and $targetUser.MemberOf.Count -gt 0) -or ($null -ne $primaryGroup)
不过这种情况几乎不会返回false,因为所有AD用户都有主组,所以更推荐第一种方案用于你的有效性校验。
新手必备前置
如果运行时提示找不到Get-ADUser命令,说明你没装AD PowerShell模块:
- 服务器系统:运行
Install-WindowsFeature RSAT-AD-PowerShell安装 - 客户端系统(Win10/11):在「设置-应用-可选功能-添加功能」中搜索安装「RSAT: Active Directory Domain Services and Lightweight Directory Tools」
内容的提问来源于stack exchange,提问作者SoulfireFox
相关产品推荐
相关产品推荐

