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

Azure自动化账户中Get-AzureADApplicationProxyApplication执行失败求助

解决方案与替代方法

空引用异常的核心原因

空引用问题大概率是Azure AD PowerShell模块在自动化账户环境中的兼容性问题,或是模块调用Graph API时的权限上下文差异。即便给托管标识分配了Azure AD角色,部分PowerShell cmdlet仍可能需要显式的Graph API应用权限,而非仅依赖角色权限。

替代方案:直接调用Microsoft Graph API获取证书信息

绕过PowerShell cmdlet的限制,直接调用Graph API查询应用代理的证书元数据,步骤如下:

  1. 为托管标识配置Graph API应用权限

    • 给自动化账户的系统托管标识添加Application.Read.All(应用权限),并完成管理员同意操作。该权限足以读取应用代理的证书信息。
  2. 在自动化Runbook中实现API调用
    通过托管标识获取Graph访问令牌,再调用API查询目标应用的代理配置:

    # 获取托管标识的Graph访问令牌
    $tokenAuthUri = $env:IDENTITY_ENDPOINT + "?resource=https://graph.microsoft.com&api-version=2019-08-01"
    $tokenResponse = Invoke-RestMethod -Method Get -Headers @{"X-IDENTITY-HEADER" = $env:IDENTITY_HEADER} -Uri $tokenAuthUri
    $accessToken = $tokenResponse.access_token
    
    # 遍历应用并提取证书过期日期
    $apps = Get-AzureADApplication -All $true
    foreach ($item in $apps) {
        $graphUri = "https://graph.microsoft.com/v1.0/applications/$($item.ObjectId)/onPremisesPublishing"
        $proxyApp = Invoke-RestMethod -Method Get -Headers @{"Authorization" = "Bearer $accessToken"} -Uri $graphUri
    
        if ($proxyApp.verifiedCustomDomainCertificatesMetadata) {
            $certExpiry = $proxyApp.verifiedCustomDomainCertificatesMetadata.expirationDateTime
            Write-Output "应用 $($item.DisplayName) 的证书过期日期: $certExpiry"
        }
    }
    

额外排查与优化建议

  • 若坚持使用Get-AzureADApplicationProxyApplication,可在Runbook中先更新Azure AD模块版本(需确保自动化账户有模块安装权限):
    Install-Module AzureAD -Force -AllowClobber
    
  • 验证托管标识权限:在Azure门户的「Azure AD」→「企业应用」中找到自动化账户的托管标识,确认已分配的API权限状态为“已授予同意”。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:06