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

如何通过Azure PowerShell或AZ CLI复制Azure计划定义?

如何通过Azure PowerShell或AZ CLI复制Azure计划定义

当然可以通过代码实现Azure计划定义(Microsoft.Authorization/policySetDefinitions)的复制,以下是AZ CLI和Azure PowerShell的具体操作步骤:

使用AZ CLI复制

  1. 导出原计划定义的配置
    运行命令获取原计划定义的JSON配置并保存到本地文件:

    # 订阅级别计划定义
    az policy set-definition show --name "原计划定义名称" --subscription "你的订阅ID" > original_policy_set.json
    
    # 管理组级别计划定义
    az policy set-definition show --name "原计划定义名称" --management-group "你的管理组名称" > original_policy_set.json
    
  2. 修改配置文件
    打开original_policy_set.json,修改以下关键字段:

    • 删除id字段(创建新定义时会自动生成)
    • 将name改为新的计划定义名称
    • 更新properties.displayName为新的显示名称
    • 可选:修改properties.description更新描述
    • 移除createdBy、createdOn、updatedBy、updatedOn这类自动生成的元数据字段
  3. 创建新的计划定义
    使用修改后的配置文件创建新计划:

    # 订阅级别创建
    az policy set-definition create --subscription "目标订阅ID" --name "新计划定义名称" --definition "@original_policy_set.json"
    
    # 管理组级别创建
    az policy set-definition create --management-group "目标管理组名称" --name "新计划定义名称" --definition "@original_policy_set.json"
    

使用Azure PowerShell复制

  1. 获取原计划定义对象
    先获取要复制的计划定义:

    # 订阅级别计划定义
    $originalPolicySet = Get-AzPolicySetDefinition -Name "原计划定义名称" -SubscriptionId "你的订阅ID"
    
    # 管理组级别计划定义
    $originalPolicySet = Get-AzPolicySetDefinition -Name "原计划定义名称" -ManagementGroupName "你的管理组名称"
    
  2. 复制并修改属性
    克隆原对象后调整关键属性:

    $newPolicySet = $originalPolicySet.Clone()
    # 设置新的名称和显示名
    $newPolicySet.Name = "新计划定义名称"
    $newPolicySet.Properties.DisplayName = "新的显示名称"
    # 可选:更新描述
    $newPolicySet.Properties.Description = "自定义的新描述"
    
    # 清除自动生成的元数据和系统字段
    $newPolicySet.Id = $null
    $newPolicySet.Type = $null
    $newPolicySet.Properties.Metadata.PSObject.Properties.Remove("CreatedBy")
    $newPolicySet.Properties.Metadata.PSObject.Properties.Remove("CreatedOn")
    $newPolicySet.Properties.Metadata.PSObject.Properties.Remove("UpdatedBy")
    $newPolicySet.Properties.Metadata.PSObject.Properties.Remove("UpdatedOn")
    
  3. 创建新计划定义
    执行命令完成创建:

    # 订阅级别创建
    New-AzPolicySetDefinition -Name $newPolicySet.Name `
        -PolicyDefinition $newPolicySet.Properties.PolicyDefinitions `
        -DisplayName $newPolicySet.Properties.DisplayName `
        -Description $newPolicySet.Properties.Description `
        -SubscriptionId "目标订阅ID"
    
    # 管理组级别创建
    New-AzPolicySetDefinition -Name $newPolicySet.Name `
        -PolicyDefinition $newPolicySet.Properties.PolicyDefinitions `
        -DisplayName $newPolicySet.Properties.DisplayName `
        -Description $newPolicySet.Properties.Description `
        -ManagementGroupName "目标管理组名称"
    

注意事项

  • 操作前确保你的账号拥有Policy Set Definition Contributor或同等权限
  • 如果原计划定义引用了其他策略定义,需保证目标订阅/管理组能访问这些被引用的定义
  • 可根据实际需求调整配置中的额外属性,比如properties.policyDefinitionGroups分组设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:10:22