如何使用PowerShell设置Azure策略集定义内单个策略定义的参数?
Azure策略集定义中单个策略参数的配置方式
在Azure策略集(Initiative)定义里,集合内单个策略的独立参数需通过以下方式配置:
先定义策略集参数映射
必须在策略集定义的结构中,将内部单个策略的参数与策略集级别的参数做绑定映射。比如在创建或更新策略集定义时,通过-PolicyDefinition参数传入的JSON结构里,每个包含的策略定义都要指定parameters字段,把该策略的参数关联到策略集的顶层参数上。通过PowerShell命令处理参数
使用Set-AzPolicySetDefinition时,有两种参数配置方式:- 直接在
-PolicyDefinition的JSON内容中定义参数映射关系及默认值 - 使用
-Parameter参数传入哈希表,指定策略集级别的参数值,这些值会自动映射到内部单个策略的对应参数
- 直接在
示例代码
# 构建策略集定义内容,包含策略关联与参数映射 $policySetContent = @{ Name = "custom-location-initiative" PolicyDefinitions = @( @{ PolicyDefinitionId = "/providers/Microsoft.Authorization/policyDefinitions/0a914e76-4921-4c19-b460-a2d36003525a" Parameters = @{ "allowedLocations" = @{ Value = "[parameters('initiativeAllowedRegions')]" } } } ) Parameters = @{ initiativeAllowedRegions = @{ Type = "Array" Metadata = @{ DisplayName = "允许部署的区域" Description = "策略集中所有策略生效的区域列表" } } } } # 更新策略集定义 Set-AzPolicySetDefinition -Name "custom-location-initiative" -PolicyDefinition $policySetContent
核心逻辑:策略集内部的单个策略参数无法直接独立传入,必须先在策略集定义中建立参数映射关系,将单个策略的参数关联到策略集顶层参数,后续无论是设置默认值还是分配时传入参数,都通过策略集级别的参数来传递。
内容的提问来源于stack exchange,提问作者user13696433
相关产品推荐
相关产品推荐

