Azure 资源标记

Azure Resource Tagging

我正在寻找一种方法来创建一个标签并使用它来标记多个资源。我标记的这些资源并不都在同一个资源组/订阅中,它们都是不同类型的资源,从 VM 到应用服务再到 Log Analytics 工作区等。总共有 3000 多个资源。最终目标是为每种资源类型创建一个标签,然后使用 powershell 按资源类型进行过滤,然后向每种资源类型发送特定的命令。下面是一个例子。

VM 资源将获得 VM-Cleanup-Tag,然后我将 运行 一个命令,将该标签添加到我指定的所有 VM 资源。然后我将 运行 一个命令来按该标记进行过滤,并在其中传输另一个命令,例如 stop-AzureVM。然后我将为许多其他资源类型做同样的事情。任何想法将不胜感激!

只需为此目的使用通用 AzResource 命令

$tags = @{"VM-Cleanup-Tag"="True" ; "ResoucreType" = "VM" ; "etc"="etc"}
Get-AzResource -ResourceType Microsoft.Compute/virtualMachines | Set-AzResource -Tag $tags -Force

然后你可以调用这些资源

$VMs_Cleanup = Get-AzResource -Tag @{"VM-Cleanup-Tag" = "True"}
$VMs_Cleanup | Stop-AzVM

foreach ($VM in $VMs_Cleanup) {
  Stop-AzVM $VM
  blah blah
}

获取标签并附加新标签

$tags = @{"VM-Cleanup-Tag"="True" ; "ResoucreType" = "VM" ; "etc"="etc"}
$Resource = Get-AzResource -Name $VMName
$tags.Keys | % {$Resource.Tags.Add($_,$tags.Item($_))}
Set-AzResource $VMName