如何获取Azure条件访问策略中应用ID的显示名称与默认应用列表
问题:获取Azure默认应用列表以匹配CA策略中的应用ID与显示名称
用户通过以下Graph请求获取条件访问(CA)策略:
$uri = "https://graph.microsoft.com/beta/identity/conditionalAccess/policies" $response = Invoke-MgGraphRequest -Uri $uri -Method GET -Headers $CustomHeader -OutputType PSObject
但$response.value[0].conditions.applications.includeApplications仅返回应用ID,无法直接获取显示名称;使用Get-MgApplication -all只能拿到自定义应用,取不到Azure默认应用,需要通过Graph或Azure PowerShell模块获取完整的默认应用列表来匹配ID和名称。
解决方案1:用Microsoft Graph API获取默认企业应用
Azure默认应用属于**服务主体(servicePrincipal)**范畴,不是自定义应用(application),直接调用servicePrincipal相关接口即可获取:
- 调用以下Graph接口,筛选微软发布的启用状态应用:
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=publisherName eq 'Microsoft Corporation' and accountEnabled eq true
- 要更精准筛选,可添加
servicePrincipalType eq 'Application'条件,排除其他类型的服务主体 - 返回结果里,
appId对应CA策略中的应用ID,displayName就是应用显示名称
解决方案2:用Azure PowerShell模块获取
使用Get-AzADServicePrincipal命令(需安装Az.Resources模块),筛选微软发布的服务主体:
# 获取所有微软发布的启用状态企业应用 Get-AzADServicePrincipal -Filter "PublisherName eq 'Microsoft Corporation' and AccountEnabled eq true" | Select-Object AppId, DisplayName
如果要批量匹配CA策略里的应用ID,可先构建映射哈希表,快速查找:
# 构建应用ID到显示名称的映射表 $appMap = @{} Get-AzADServicePrincipal -Filter "PublisherName eq 'Microsoft Corporation' and AccountEnabled eq true" | ForEach-Object { $appMap[$_.AppId] = $_.DisplayName } # 遍历CA策略,匹配每个应用ID对应的名称 $response.value | ForEach-Object { $caPolicy = $_ $caPolicy.conditions.applications.includeApplications | ForEach-Object { [PSCustomObject]@{ 策略名称 = $caPolicy.displayName 应用ID = $_ 应用名称 = $appMap[$_] ?? "未找到匹配名称" } } }
内容的提问来源于stack exchange,提问作者Sean21735
相关产品推荐
相关产品推荐

