用 powershell 覆盖 azure 资源组上的标签名称
overwriting tag Name on azure resourcegroup with powershell
下面是天蓝色的资源
PS C:\Windows\System32> Get-AzResource -ResourceGroupName paniRG
Name : paniavset123
ResourceGroupName : paniRG
ResourceType : Microsoft.Compute/availabilitySets
Location : eastus
ResourceId : /subscriptions/8987b447-d083-481e-9c0f-f2b73a15b18b/resourceGroups/paniRG/providers/Microsoft.C
ompute/availabilitySets/paniavset123
Tags :
Name Value
============== ======
CostCenter ABCDEG
Owner john
classification Public
从上面的输出中,我想用“Classification”替换标签名称“classification”,用“Accounts”替换“Public”。
我正在按照以下程序进行操作。
PS C:\Windows\System32> $tags=@{"Classification"="Accounts"}
PS C:\Windows\System32> $s=Get-AzResource -ResourceGroupName paniRG
PS C:\Windows\System32> Update-AzTag -ResourceId $s.ResourceId -Tag $tags -Operation Merge
Id : /subscriptions/8987b447-d083-481e-9c0f-f2b73a15b18b/resourceGroups/paniRG/providers/Microsoft.Compute/availabilitySets/
paniavset123/providers/Microsoft.Resources/tags/default
Name : default
Type : Microsoft.Resources/tags
Properties :
Name Value
============== ========
CostCenter ABCDEG
Owner john
classification Accounts
当我使用 update-aztag
命令时,标签值正在更改,但名称仍显示为“分类”。
谁能帮我解决这个问题?
您可以从散列 table 资源 Tags
中删除 classification
标签,然后使用新的 Account
值添加一个新的 Classification
标签。然后你可以用Set-AzResource
.
修改新更新的hashtable
$resource = Get-AzResource -Name "RESOURCE NAME" -ResourceGroupName "RESOURCE GROUP NAME"
# Get the tags
$tags = $resource.Tags
# Check if hashtable has classification key
if ($tags.ContainsKey("classification")) {
# Remove classification key if it exists
$tags.Remove("classification")
}
# Create Classification tag with Accounts value
$tags.Classification = "Accounts"
# Update resource with new tags
$resource | Set-AzResource -Tag $tags -Force
如果要使用Update-AzTag
,则需要使用Replace
操作:
Update-AzTag -ResourceId $s.Id -Tag $tags -Operation Replace
Merge
操作将更新值,但不会更新键名。
只需使用 -Operation Replace
而不是 -Operation Merge
Update-AzTag -ResourceId $s.ResourceId -Tag $mergedTags -Operation Replace
下面是天蓝色的资源
PS C:\Windows\System32> Get-AzResource -ResourceGroupName paniRG
Name : paniavset123
ResourceGroupName : paniRG
ResourceType : Microsoft.Compute/availabilitySets
Location : eastus
ResourceId : /subscriptions/8987b447-d083-481e-9c0f-f2b73a15b18b/resourceGroups/paniRG/providers/Microsoft.C
ompute/availabilitySets/paniavset123
Tags :
Name Value
============== ======
CostCenter ABCDEG
Owner john
classification Public
从上面的输出中,我想用“Classification”替换标签名称“classification”,用“Accounts”替换“Public”。
我正在按照以下程序进行操作。
PS C:\Windows\System32> $tags=@{"Classification"="Accounts"}
PS C:\Windows\System32> $s=Get-AzResource -ResourceGroupName paniRG
PS C:\Windows\System32> Update-AzTag -ResourceId $s.ResourceId -Tag $tags -Operation Merge
Id : /subscriptions/8987b447-d083-481e-9c0f-f2b73a15b18b/resourceGroups/paniRG/providers/Microsoft.Compute/availabilitySets/
paniavset123/providers/Microsoft.Resources/tags/default
Name : default
Type : Microsoft.Resources/tags
Properties :
Name Value
============== ========
CostCenter ABCDEG
Owner john
classification Accounts
当我使用 update-aztag
命令时,标签值正在更改,但名称仍显示为“分类”。
谁能帮我解决这个问题?
您可以从散列 table 资源 Tags
中删除 classification
标签,然后使用新的 Account
值添加一个新的 Classification
标签。然后你可以用Set-AzResource
.
$resource = Get-AzResource -Name "RESOURCE NAME" -ResourceGroupName "RESOURCE GROUP NAME"
# Get the tags
$tags = $resource.Tags
# Check if hashtable has classification key
if ($tags.ContainsKey("classification")) {
# Remove classification key if it exists
$tags.Remove("classification")
}
# Create Classification tag with Accounts value
$tags.Classification = "Accounts"
# Update resource with new tags
$resource | Set-AzResource -Tag $tags -Force
如果要使用Update-AzTag
,则需要使用Replace
操作:
Update-AzTag -ResourceId $s.Id -Tag $tags -Operation Replace
Merge
操作将更新值,但不会更新键名。
只需使用 -Operation Replace
而不是 -Operation Merge
Update-AzTag -ResourceId $s.ResourceId -Tag $mergedTags -Operation Replace