PowerShell无法使用-Recursive开关获取AD组成员及权限异常问题
这问题我之前在域环境排障时碰到过类似的,咱们从最常见的几个方向来拆解排查:
可能的原因及解决步骤
1. UAC权限过滤是首当其冲的排查点
域控制器默认开启了UAC的本地管理员批准模式,域管理员账号本地登录时会自动剥离高权限令牌(也就是所谓的LUA过滤)。Admin1自己登录后执行命令成功,大概率是因为他的会话令牌虽然被过滤,但用自己的凭据执行时,UAC会自动提升权限;而Admin2用Admin1的凭据时,UAC可能阻止了这个提升动作。
- 排查/验证:让Admin2右键点击PowerShell,选择「以管理员身份运行」,再输入Admin1的凭据执行命令,看是否成功。
- 临时解决:如果确实是UAC的问题,可临时修改DC的本地安全策略:
本地策略 → 安全选项 → 用户账户控制:管理员批准模式中管理员的提升权限提示行为,改成「不提示,直接提升」(注意:这只是临时测试用,不推荐长期保持这个设置,会降低安全性)。
2. 「模拟客户端进行身份验证」权限缺失
当你在本地会话中用另一个用户的凭据执行操作时,当前登录用户(Admin2)需要具备「模拟客户端进行身份验证」的权限,否则无法模拟Admin1的身份访问AD服务。
- 排查:在DC01上打开「本地安全策略」,依次进入
本地策略 → 用户权限分配 → 模拟客户端进行身份验证,检查列表里是否包含域管理员组或者Admin2账号。 - 解决:如果没有,添加域管理员组(或者直接添加Admin2)到这个权限列表,然后执行
gpupdate /force刷新组策略,或者重启DC生效。
3. Kerberos身份验证票据问题
在DC本地跨用户执行AD命令时,可能涉及Kerberos票据的传递问题。Admin2的会话可能无法正确获取Admin1的Kerberos票据来访问AD服务。
- 排查/验证:让Admin2在PowerShell里先执行
klist purge清空当前会话的所有Kerberos票据,然后重新输入Admin1的凭据执行命令;或者强制用NTLM身份验证测试,命令改成:Get-ADGroupMember administrators -Credential (Get-Credential) -Server dc01 -AuthType NTLM - 解决:如果NTLM方式能成功,说明Kerberos存在问题,可检查DC的SPN注册是否正常(用
setspn -L dc01查看),或者确认Admin1的账号没有被限制Kerberos票据的生成。
4. 其他小众可能性(优先级较低)
- PowerShell执行策略:检查Admin2的执行策略是否为
Restricted,执行Get-ExecutionPolicy查看,若为Restricted可临时改成RemoteSigned(Set-ExecutionPolicy RemoteSigned -Force)。 - AD模块权限:确认Admin2能正常加载ActiveDirectory模块,执行
Import-Module ActiveDirectory看是否报错,若报错检查模块文件的读取权限(默认域管理员应该具备)。
内容的提问来源于stack exchange,提问作者StackExchangeGuy
相关产品推荐
相关产品推荐

