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

通过PowerShell批量更新Azure资源组标签(基于CSV文件)

Azure资源组标签批量更新解决方案

步骤1:导出可编辑格式的标签到CSV

默认导出Tags字段会得到哈希表格式,无法直接编辑,改用以下脚本导出可编辑的标签字符串:

Get-AzResourceGroup | ForEach-Object {
    $tagString = if ($_.Tags) {
        ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join ";"
    } else {
        ""
    }
    [PSCustomObject]@{
        ResourceGroupName = $_.ResourceGroupName
        TagString         = $tagString
    }
} | Export-Csv -Path "ResourceGroupTags.csv" -NoTypeInformation -Encoding UTF8

导出的CSV中,TagString列格式为键1=值1;键2=值2(例如Environment=X,Y,Z,K;CostCenter=Prod),直接编辑该列即可完成标签值修改(替换Y为W、添加T等操作)。

步骤2:批量更新Azure资源组标签

使用以下脚本读取修改后的CSV,批量同步标签到Azure:

# 读取修改后的CSV文件
$tagData = Import-Csv -Path "ResourceGroupTags.csv" -Encoding UTF8

foreach ($item in $tagData) {
    $rgName = $item.ResourceGroupName
    $tagString = $item.TagString

    # 将标签字符串解析为哈希表
    $updatedTags = @{}
    if (-not [string]::IsNullOrEmpty($tagString)) {
        $tagPairs = $tagString -split ";"
        foreach ($pair in $tagPairs) {
            $key, $value = $pair -split "=", 2
            $updatedTags[$key.Trim()] = $value.Trim()
        }
    }

    # 方案1:完全替换资源组所有标签(适合统一标签场景)
    Set-AzResourceGroup -Name $rgName -Tag $updatedTags -Force

    # 方案2:仅更新指定标签,保留原有其他标签(更安全)
    # $existingRG = Get-AzResourceGroup -Name $rgName
    # $existingTags = $existingRG.Tags.Clone()
    # foreach ($key in $updatedTags.Keys) {
    #     $existingTags[$key] = $updatedTags[$key]
    # }
    # Set-AzResourceGroup -Name $rgName -Tag $existingTags -Force
}

关键说明

  • 多值标签处理:标签值本质是字符串,直接在CSV的TagString列修改即可(例如将X,Y,Z,K改为X,W,Z,K,T),脚本会自动同步修改后的值到Azure。
  • 批量效率:脚本通过循环自动处理数百个资源组,无需手动逐个操作,满足批量场景需求。
  • 权限要求:确保执行脚本的账号拥有Microsoft.Resources/subscriptions/resourceGroups/write权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:23:26