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

PowerShell查询Service Principal委托权限返回空白结果求助

核心错误原因

你命令返回空结果的根本原因是传入的ID类型不匹配:
Get-AzureADOAuth2PermissionGrant 结果中的ClientId字段,对应的是服务主体(Enterprise Application/企业应用)的Object ID,而非你在「应用注册」页面看到的App Registration对象的Object ID,也不是应用的Application (Client) ID。
Azure AD里应用注册和对应的本地租户服务主体是两个独立的目录对象,二者Object ID完全不同:应用注册是全局的应用配置模板,服务主体是该应用在当前租户下的实例化身份,所有权限授权记录都是绑定在服务主体上的,直接传应用注册的Object ID自然匹配不到任何数据。

修复步骤
  1. 先获取正确的服务主体Object ID
    两种方式都可以拿到:
    • 门户操作:在你截图的应用注册概述页,找到「本地目录中的托管应用程序」入口点击跳转,进入关联的企业应用页面,该页概述里展示的Object ID就是需要的正确值。
    • PowerShell查询:把命令里的your_application_client_id换成你应用注册页的Application (Client) ID(即你平时做登录配置用的那个客户端GUID):
      # 获取对应服务主体对象
      $servicePrincipal = Get-AzureADServicePrincipal -Filter "AppId eq 'your_application_client_id'"
      # 输出正确的服务主体Object ID
      $servicePrincipal.ObjectId
      
  2. 用拿到的服务主体Object ID替换原命令里的查询值,即可拉取到所有已配置的委托权限授权记录:
    Get-AzureADOAuth2PermissionGrant | Where-Object { $_.ClientId -eq $servicePrincipal.ObjectId } | Select-Object *
    
额外注意事项
  • 旧版AzureAD模块已经正式停止支持,长期使用建议迁移到Microsoft Graph PowerShell模块,对应查询命令如下:
    # 先导入Graph模块并选择对应权限范围
    Connect-MgGraph -Scopes "Directory.Read.All"
    # 查询指定服务主体的委托权限授权
    Get-MgOauth2PermissionGrant -Filter "clientId eq '$($servicePrincipal.Id)'"
    
  • 如果替换正确ID后依然查不到部分权限,检查是否是用户级别的动态同意授权:这类授权是绑定到具体用户ID的,不会出现在服务主体级的全局授权列表里,需要加ConsentType字段做过滤查询。

内容的提问来源于stack exchange,提问作者Mahesh3143

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:39:16