Reputation: 195
I want to replace one tag value at all resources in one resource group. The value what should be changed comes from the resource group.
$rgname = "cldazcs...."
$rg = Get-AzResourceGroup -Name $rgName
$rgTagsAll = $rg.Tags
$rgTagDedicated = $rg.tags.Responsible
$rgTagDedicated
$rgTags
$rgTags.Remove("RG_Description")
$resources = Get-AzResource -ResourceGroupName $rgName
$resources
Write-Output ""
Write-Output "=== The following Tags will be applied ==="
Write-Output $rgTagsAll
Write-Output "Dedicated:"$rgTagDedicated
foreach ( $resource in $ressources ) {
Write-Output "=== Update the following Ressource"
Write-Output $resource.Name
Set-AzResource -ResourceId $resource.Id -Tag @{Responsible="$rgTagsDedicated"} -Force
}
After the script is running, the value from Tag Responsible in all resources is empty.
Upvotes: 0
Views: 1000
Reputation: 23111
According to my test, we can use the following script to update resouce's tag
Connect-AzAccount
$rgname = "jimgroup"
$rg = Get-AzResourceGroup -Name $rgName
$rgTagsAll = $rg.Tags
$rgTagDedicated = $rg.Tags.created_by
$rgTagDedicated
$resources = Get-AzResource -ResourceGroupName $rgName
foreach($resource in $resources){
#check if the resouce has the tag
if($resource.tags.ContainsKey("created_by")){
#change the tag value
$resource.tags.created_by=$rgTagDedicated
Set-AzResource -ResourceId $resource.Id -Tag $resource.tags -Force
}else{
#add the tag
$resource.tags.add("created_by",$rgTagDedicated)
Set-AzResource -ResourceId $resource.Id -Tag $resource.tags -Force
}
}
$resources = Get-AzResource -ResourceGroupName $rgName
$resources[0].Tags
Upvotes: 1