如何使用AZ脚本删除Azure资源的指定标签而非全部标签?
仅删除特定资源标签的方法
你之前用的az tag delete命令会清除资源的所有标签,要只删掉Business unit这个标签、保留其他标签的话,换用下面的命令就行,同时给你PowerShell的实现方式:
Azure CLI 命令
用az tag update搭配--remove参数指定要删除的标签键,这会只移除目标标签,其他标签不受影响:
az tag update --resource-id <你的资源ID> --remove "Business unit"
如果要批量处理hrm01vm、hrmvnet、hrmappservice这些资源,可以写个循环:
# 把你的资源ID填进去,替换掉订阅ID和资源组 resourceIds=( "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/virtualMachines/hrm01vm" "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworks/hrmvnet" "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Web/sites/hrmappservice" ) # 逐个删除指定标签 for id in "${resourceIds[@]}"; do az tag update --resource-id $id --remove "Business unit" done
PowerShell (Az 模块) 实现
方法1:直接用Update-AzTag
通过-Operation Delete指定删除操作,-Tag参数传入要删除的标签键(值设为$null即可):
# 单个资源的情况 Update-AzTag -ResourceId "<你的资源ID>" -Operation Delete -Tag @{"Business unit"=$null} # 批量处理多个资源 $resourceIds = @( "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/virtualMachines/hrm01vm", "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworks/hrmvnet", "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Web/sites/hrmappservice" ) foreach ($id in $resourceIds) { Update-AzTag -ResourceId $id -Operation Delete -Tag @{"Business unit"=$null} }
方法2:先获取现有标签再更新
如果需要先确认现有标签再修改,可以先获取资源对象,移除目标标签后再设置回去:
# 获取资源 $resource = Get-AzResource -ResourceId "<你的资源ID>" # 移除指定标签 $resource.Tags.Remove("Business unit") # 更新资源标签,-Force参数会跳过确认提示 Set-AzResource -ResourceId $resource.ResourceId -Tag $resource.Tags -Force
注意:记得把命令里的<订阅ID>、<资源组>换成你实际的信息,标签名称带空格的话一定要用引号包裹好,避免命令解析出错。
内容的提问来源于stack exchange,提问作者Amar Sahoo
相关产品推荐
相关产品推荐

