PowerShell查询AD用户MemberOf属性无返回也无报错如何解决?
AD用户MemberOf属性无输出排查方案
1. 先确认Get-ADUser是否真的获取到了目标用户对象
- 先执行
$sourceUser | Select-Object Name, SamAccountName, DistinguishedName,确认返回了用户VB的基础信息:如果这里无输出,说明-Identity参数匹配不到对应用户,要么用户名填写错误,要么当前查询的域和用户所在域不匹配。 - 注意
-Identity参数仅支持SamAccountName、可分辨名称、SID、GUID四种取值,如果你填写的VB不属于上述任意一种取值,默认不会返回对象也不会抛出显性报错,可以添加-ErrorAction Stop参数开启严格报错验证:
$sourceUser = Get-ADUser -Identity VB -Properties MemberOf -ErrorAction Stop
如果执行该命令报错,可直接根据报错信息定位用户不存在、权限不足类问题。
2. 确认用户确实加入了除默认主组外的其他组
- 域用户的默认主组
Domain Users默认不会展示在MemberOf属性中,如果用户仅加入了这一个组,MemberOf属性自然是空值。 - 可以换用以下命令查询包含主组在内的所有用户所属组:
Get-ADPrincipalGroupMembership -Identity VB | Select-Object Name, DistinguishedName
- 如果上述命令返回了组信息,说明是
MemberOf属性的固有显示限制,并非查询逻辑错误。
3. 验证查询账号权限
你当前运行PowerShell的账号,需要对目标用户所在OU有读取用户属性的权限,如果使用的是普通域账号,部分受限OU的属性默认禁止读取,可尝试以域管理员身份运行PowerShell后重新执行脚本验证。
4. 验证模块配置与域控连通性
- 确认ActiveDirectory模块加载正常,执行
Get-Module ActiveDirectory查看模块状态,如果加载失败,需要先在Windows功能中安装「RSAT: Active Directory 域服务和轻型目录服务工具」。 - 确认本机可以正常连通目标域控,执行
nltest /dsgetdc:authserver.com验证域连接状态。
内容的提问来源于stack exchange,提问作者Vidya B
相关产品推荐
相关产品推荐

