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

如何提取含排除范围的Azure管理组A策略分配数据?

提取Azure各层级策略分配(含排除范围notScopes)并导出Excel的方案

一、问题原因说明

之前调用REST API或Azure CLI未获取到notScopes数据,是因为默认接口/命令仅返回直接分配的策略,且不会强制返回空值的notScopes字段。必须显式指定参数,才能获取包含继承策略、完整notScopes的全量数据。

二、Azure CLI实现步骤

1. 基础准备

先登录Azure账号:

az login

2. 分层级获取全量策略分配数据

管理组层级(以管理组"A"为例)

# 导出管理组A的所有策略分配(含继承、含notScopes)到JSON文件
az policy assignment list --management-group "A" --include-inherited --include-not-scopes --output json > mgmt-group-policies.json

订阅层级

# 替换<订阅ID/名称>为实际值
az policy assignment list --subscription <订阅ID/名称> --include-inherited --include-not-scopes --output json > subscription-policies.json

资源组层级

# 替换<资源组名称>为实际值
az policy assignment list --resource-group <资源组名称> --include-inherited --include-not-scopes --output json > rg-policies.json

3. 转换为CSV格式(方便导入Excel)

用jq工具提取关键字段并生成CSV(需提前安装jq):

# 处理管理组数据,生成CSV
jq -r '[.[] | {层级类型:"管理组",层级名称:"A",分配名称:.name,策略ID:.policyDefinitionId,排除范围:(.notScopes | join(";"))}] | (first | keys_unsorted) as $keys | $keys, map([.[ $keys[] ]])[] | @csv' mgmt-group-policies.json > mgmt-group-policies.csv

订阅/资源组的CSV转换只需修改对应层级类型和层级名称字段即可。

三、PowerShell实现步骤(直接导出Excel兼容格式)

1. 基础准备

登录Azure账号:

Connect-AzAccount

2. 分层级导出CSV

管理组层级

$mgmtGroupPolicies = Get-AzPolicyAssignment -ManagementGroupName "A" -IncludeInherited -IncludeNotScopes
$mgmtGroupPolicies | Select-Object `
    @{Name="层级类型"; Expression={"管理组"}},
    @{Name="层级名称"; Expression={"A"}},
    @{Name="分配名称"; Expression={$_.Name}},
    @{Name="策略ID"; Expression={$_.PolicyDefinitionId}},
    @{Name="排除范围"; Expression={$_.NotScopes -join ";"}} |
Export-Csv -Path "mgmt-group-policies.csv" -NoTypeInformation -Encoding UTF8

订阅层级

$subId = "<订阅ID>"
$subName = (Get-AzSubscription -SubscriptionId $subId).Name
$subPolicies = Get-AzPolicyAssignment -SubscriptionId $subId -IncludeInherited -IncludeNotScopes
$subPolicies | Select-Object `
    @{Name="层级类型"; Expression={"订阅"}},
    @{Name="层级名称"; Expression={$subName}},
    @{Name="分配名称"; Expression={$_.Name}},
    @{Name="策略ID"; Expression={$_.PolicyDefinitionId}},
    @{Name="排除范围"; Expression={$_.NotScopes -join ";"}} |
Export-Csv -Path "subscription-policies.csv" -NoTypeInformation -Encoding UTF8

资源组层级

$rgName = "<资源组名称>"
$rgPolicies = Get-AzPolicyAssignment -ResourceGroupName $rgName -IncludeInherited -IncludeNotScopes
$rgPolicies | Select-Object `
    @{Name="层级类型"; Expression={"资源组"}},
    @{Name="层级名称"; Expression={$rgName}},
    @{Name="分配名称"; Expression={$_.Name}},
    @{Name="策略ID"; Expression={$_.PolicyDefinitionId}},
    @{Name="排除范围"; Expression={$_.NotScopes -join ";"}} |
Export-Csv -Path "rg-policies.csv" -NoTypeInformation -Encoding UTF8

四、REST API补充说明

如果必须用REST API,请求URL需添加$expand=notScopes和$filter=all()参数,确保返回全量数据:

GET https://management.azure.com/providers/Microsoft.Management/managementGroups/A/providers/Microsoft.Authorization/policyAssignments?api-version=2022-06-01&$expand=notScopes&$filter=all()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:48:08