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

为什么Get-AzureADServicePrincipal无法查询到已创建的服务主体?

问题原因及解决方案

核心根因

你遇到的这个现象是Azure AD中应用对象和服务主体对象的差异、以及PowerShell模块的使用/兼容性问题共同导致的,具体可以从以下几个方向排查:

  • 参数使用错误是最常见的诱因
    应用ID(Client ID)是应用对象和服务主体对象共享的属性,但Get-AzureADServicePrincipal的-ObjectId参数接收的是服务主体自身的唯一实体ID,和应用ID完全无关。如果你查询时误用了-ObjectId参数传入应用ID,自然会返回空结果。
    正确的查询命令如下:

    # 用Filter参数筛选应用ID
    Get-AzureADServicePrincipal -Filter "AppId eq '替换为你的应用ID'"
    # 或者直接使用专用的ApplicationId参数
    Get-AzureADServicePrincipal -ApplicationId '替换为你的应用ID'
    

    你能通过相同应用ID查询到Get-AzureADApplication结果,说明你的应用ID本身是正确的,优先排查这个问题即可。

  • 模块上下文不匹配
    New-AzADServicePrincipal属于Az PowerShell模块,Get-AzureADServicePrincipal属于已正式停止维护的AzureAD模块,两个模块的登录授权上下文是相互独立的。如果你用Az模块登录的是创建服务主体的目标租户,但AzureAD模块之前登录的是其他租户,也会出现查不到结果的问题。可以执行Get-AzureADCurrentSessionInfo检查当前AzureAD模块登录的租户是否和创建资源的租户一致。

  • AzureAD模块的兼容性缺陷
    AzureAD模块已于2024年正式停止支持,对部分新的AAD属性、Az模块创建的资源的查询适配存在已知问题。如果排查上面两个问题后依然无法查询,建议直接使用和创建命令同属Az模块的Get-AzADServicePrincipal查询,无需切换上下文即可直接获取结果:

    Get-AzADServicePrincipal -ApplicationId '替换为你的应用ID'
    

    也可以替换为微软官方推荐的Microsoft Graph PowerShell模块的Get-MgServicePrincipal命令查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:42:03