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

跨域执行Get-ADPrincipalGroupMembership的最低权限与报错排查

解决Get-ADPrincipalGroupMembership的"An operations error occurred"问题

我之前处理过不少跨林跨域的AD查询问题,你的这个报错通常和权限配置、参数使用或者信任关系的细节有关,结合你的环境场景,我来拆解一下问题和解决方案:

先明确你的环境背景

  • 林1
    • 父域A
    • 子域A(林1的子域)
  • 林2
    • 父域B
      林1的子域A和林2的父域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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:14:33