PowerShell脚本更新Azure中的标记

时间:2019-09-13 19:23:27

标签: azure powershell

我正在尝试在我们的Azure环境中更新一些旧版资源标签。我需要保留这些资源的标签并仅更新其中一个,但是对100多个资源进行的这项简单任务对我来说却变得头疼。 PowerShell根本不会轻易用新值覆盖现有标签,所以我创建了一个我希望是一个脚本为当前标签创建变量的脚本,省略了一个需要更新的操作,删除了所有应用的标签,将新标签和值添加到存储的标签变量,然后将其应用于具有此错误标签值的所有资源。这是我的代码:

$r = (Get-AzResource -Tag @{Environment="Non-Prodd"}).Name
$tags = (Get-AzResource -Name $r).Tags | Where {$_.Key -ne 'Environment'}
Get-AzResource -resourcename $r | Set-AzResource -Tag @{} 
$tags += @{Environment="Non-Prod"} 
Get-AzResource -resourcename $r | Set-AzResource -Tag $tags -Force

我以“非产品”为例来说明需要更新的值。 $ tags变量代码不会在其输出中排除Environment标记,这是我最大的问题。从存储的变量重新应用标签时,我对“环境”仍在应用感到不满。

如果我只是跑步:

(Get-AzResource -Name $r).Tags | Where {$_.Key -ne 'Environment'}

省略的标签仍在列表中。

我也愿意采用其他任何方式来实现自己的目标。

1 个答案:

答案 0 :(得分:0)

只需:

$tags = (Get-AzResource -Name $r).Tags
$tags.environment = value
Get-AzResource -resourcename $r | Set-AzResource -Tag $tags -Force