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

求助:使用Microsoft Graph API筛选指定Azure应用注册信息失败

解决Graph API /applications端点过滤不生效及获取应用所有者的问题

问题根源

你遇到的返回所有应用而非指定应用的问题,是因为PowerShell中双引号字符串会自动解析$开头的内容为变量。你的Uri用双引号包裹时,$filter会被当作PowerShell变量(而非URL参数),而你没有定义这个变量,导致最终发送的请求URL丢失了过滤条件,因此返回所有应用。

解决步骤

1. 修正Uri的引号使用

将Uri用单引号包裹,避免PowerShell解析$filter:

Invoke-RestMethod -Uri 'https://graph.microsoft.com/v1.0/applications?$filter=appId eq ''f059f748-6b42-46ec-8d5b-23a0fee126ee''' -Headers $headers -Method GET

或者用反引号转义$`符号(双引号内):

Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/applications?`$filter=appId eq 'f059f748-6b42-46ec-8d5b-23a0fee126ee'" -Headers $headers -Method GET

2. 验证请求URL

可以先输出Uri确认是否正确:

$uri = 'https://graph.microsoft.com/v1.0/applications?$filter=appId eq ''f059f748-6b42-46ec-8d5b-23a0fee126ee'''
Write-Host $uri

确保输出的URL包含完整的$filter参数。

3. 获取应用所有者

拿到指定应用后,有两种方式获取其所有者:

方式一:单独调用owners端点

先获取应用的id属性,再请求:

# 获取指定应用
$app = Invoke-RestMethod -Uri 'https://graph.microsoft.com/v1.0/applications?$filter=appId eq ''f059f748-6b42-46ec-8d5b-23a0fee126ee''' -Headers $headers -Method GET

# 获取应用所有者
$owners = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/applications/$($app.value[0].id)/owners" -Headers $headers -Method GET

方式二:请求应用时直接展开所有者

用$expand=owners参数一次性获取应用及所有者信息:

$result = Invoke-RestMethod -Uri 'https://graph.microsoft.com/v1.0/applications?$filter=appId eq ''f059f748-6b42-46ec-8d5b-23a0fee126ee''&$expand=owners' -Headers $headers -Method GET
$owners = $result.value[0].owners

权限说明

确保你的服务主体已被授予以下Graph API应用权限:

  • Application.Read.All(读取所有应用信息)
  • Directory.Read.All(读取目录对象,包括所有者)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:07:48