Azure Policy 如何检查initiative是否存在并实现不存在则创建
操作前置准备
- 先安装Azure PowerShell的Az模块,未安装的话执行命令:
Install-Module -Name Az -AllowClobber -Scope CurrentUser - 执行
Connect-AzAccount登录Azure账号,再切换到目标订阅:Set-AzContext -SubscriptionId "你的订阅ID"
实现逻辑与可直接运行的示例代码
核心逻辑非常简单:先查询指定名称的策略倡议(initiative,官方正式名称为策略集定义)是否存在,不存在就执行新建操作,存在则直接跳过。
# 1. 自定义参数,根据你的实际需求修改对应值即可 $initiativeName = "你要校验的倡议唯一名称" $initiativeDisplayName = "倡议对外展示的名称" $initiativeDescription = "倡议的功能描述" # 此处填入需要加入该倡议的策略规则,示例为内置的允许位置策略,替换为你自己的策略ID和参数即可 $policyDefinitions = @( @{ policyDefinitionId = "/providers/Microsoft.Authorization/policyDefinitions/0a914e76-4921-4c19-b460-a2d36003525a" parameters = @{} } ) $initiativeLocation = "global" # 策略倡议默认是全局资源,固定填global即可 # 2. 检查目标倡议是否存在 $existingInitiative = Get-AzPolicySetDefinition -Name $initiativeName -ErrorAction SilentlyContinue # 3. 不存在则新建,存在则跳过 if ($null -eq $existingInitiative) { Write-Host "目标倡议不存在,开始创建..." New-AzPolicySetDefinition ` -Name $initiativeName ` -DisplayName $initiativeDisplayName ` -Description $initiativeDescription ` -PolicyDefinition $policyDefinitions ` -Location $initiativeLocation Write-Host "倡议创建完成" } else { Write-Host "目标倡议已存在,不执行任何操作" }
注意事项
- 如果需要在管理组级别创建倡议,查询和新建的命令都需要额外添加
-ManagementGroupName "你的管理组名称"参数 - 如果倡议需要配置自定义参数,调用
New-AzPolicySetDefinition时新增-Parameter参数传入对应的参数定义即可 - 建议所有参数先在测试环境验证通过后再应用到生产环境,避免生成无效资源
内容的提问来源于stack exchange,提问作者Dave Gaitan Escobar
相关产品推荐
相关产品推荐

