跨域执行Get-ADPrincipalGroupMembership的最低权限与报错排查
解决Get-ADPrincipalGroupMembership的"An operations error occurred"问题
我之前处理过不少跨林跨域的AD查询问题,你的这个报错通常和权限配置、参数使用或者信任关系的细节有关,结合你的环境场景,我来拆解一下问题和解决方案:
先明确你的环境背景
- 林1
- 父域A
- 子域A(林1的子域)
- 林2
- 父域B
林1的子域A和林2的父域B之间已经建立了双向林信任,当前的操作场景是:
- 父域B
- 查询的用户账号在林2的父域B
- 要获取的组在林1的子域A
- 执行命令时用的是林1子域A的凭据
问题重现的命令和错误
你运行的PowerShell命令:
Get-ADPrincipalGroupMembership -Identity 'Parent Domain B User' -server 'Parent Domain B DC' -ResourceContextServer 'Child Domain A DC' -Credential 'Child Domain A User Creds'
返回的错误:
Get-ADPrincipalGroupMembership : An operations error occurred
关键问题解答与修复方案
1. 关于凭据所属域的确认
你用子域A的凭据是正确的——因为要查询子域A的组资源,跨域场景下需要资源域的合法凭据。但要注意:
- 凭据必须是子域A中同时有权限读取父域B用户信息和子域A组信息的账号
- 输入凭据时最好用完整格式:要么是
子域A\用户名,要么是用户主体名(UPN)比如user@childA.yourdomain.com,避免名称解析出错
2. 最低权限要求
执行这个命令需要的最低权限其实很明确:
- 对父域B的目标用户对象:需要有
读取属性权限(至少要能读取用户的memberOf属性,以及跨域信任相关的属性) - 对子域A的组对象:需要有
读取属性权限(能读取组的成员列表) - 另外,这个凭据账号默认得是子域A中
Authenticated Users组的成员(这是AD默认的权限配置,一般不会有问题)
3. 命令参数的修正建议
你的命令参数有个关键问题:-Server指向了父域B的DC,但跨域查询资源域的组时,应该把-Server指向子域A的DC——因为-Server是指定执行查询的DC,而ResourceContextServer是用来限定资源所在的域上下文。调整后的命令示例:
# 用完整UPN指定目标用户,指定子域A的DC作为查询服务器,明确资源上下文 $cred = Get-Credential CHILDA\your-service-account Get-ADPrincipalGroupMembership -Identity 'target-user@parentB.yourdomain.com' -Server 'childA-dc.yourdomain.com' -ResourceContextServer 'childA.yourdomain.com' -Credential $cred
4. 额外的排查步骤
如果调整后还是报错,可以试试这些排查动作:
- 先验证双向信任是否正常:运行
Test-ADTrust -SourceDomain childA.yourdomain.com -TargetDomain parentB.yourdomain.com,确保信任状态是Success - 检查执行命令的机器能不能解析两个域的DC,并且网络连通(AD常用的TCP 389、636端口要能通)
- 尝试用子域A的凭据直接登录到执行命令的机器,再运行命令,排除凭据传递的问题
内容的提问来源于stack exchange,提问作者PowershellUser42
相关产品推荐
相关产品推荐

