如何使用Azure CLI为指定资源组内所有虚拟机分配标签
Azure CLI脚本:为特定资源组内的虚拟机批量分配标签
我帮你完善并整理了符合需求的Azure CLI脚本,同时拆解了每个步骤的作用,方便你根据实际场景调整:
# 1. 通过服务主体登录Azure az login \ --service-principal \ --username "$service_principal_ID" \ --password "$service_principal_password" \ --tenant "$tenant_ID" # 2. 切换到目标订阅 az account set --subscription "$subID" # 3. 为指定资源组内的所有虚拟机分配标签 # 注意:默认是合并现有标签,如果需要替换所有标签,添加 --operation Replace 参数 az resource tag \ --resource-group "$rg" \ --tags "project=$project" "owner=$owner" "environment=$env" \ --resource-type "Microsoft.Compute/virtualMachines" \ --output table
关键步骤说明:
- 服务主体登录:这里用
--service-principal指定登录方式,--username对应服务主体的客户端ID,--password是服务主体的密钥,--tenant是你的Azure租户ID。记得提前把这些变量替换成实际值,或者通过环境变量注入。 - 切换订阅:确保后续所有资源操作都限定在你指定的
$subID订阅内,避免误操作其他订阅的资源。 - 分配标签:
--resource-group明确指定要操作的资源组范围,避免影响其他资源组的VM;--tags采用键=值的格式,多个标签用空格分隔;--resource-type精准定位到虚拟机资源类型,确保只给VM打标签;--output table让输出更易读,你也可以换成tsv、json等格式适配自动化场景;- 如果需要完全替换VM上已有的标签(而不是合并),在命令末尾添加
--operation Replace即可。
注意事项:
- 确保你的服务主体拥有目标资源组的
Tag Contributor或Contributor权限,否则会出现权限不足的错误; - 所有变量(比如
$service_principal_ID、$rg等)都需要提前定义,或者直接替换成实际的字符串值; - 如果资源组内没有虚拟机,脚本不会执行任何操作,也不会报错。
内容的提问来源于stack exchange,提问作者bonafide
相关产品推荐
相关产品推荐

