Azure - Tags Update/Create using PowerShell Script

Prashanth Kumar
3 min readMar 24, 2022

Intent of this Article to update/Create using Azure Powershell script. Sometimes we create Azure services however we forget to update Tags. Missing of Tags will cause lot of issues while trying to find the exact team for which service belongs to (In case of 1 single Subscription with many Azure Resource groups).

Also sometimes it will be painful process if you are dealing with 100’s of Azure Services in Environment and Updating them will be a cumbersome process.

So how do we update them?

Lets take some use case scenario’s.

Currently in my sample example I have few NSG’s, So firstly i would like to find out if there are any tags associated with it or not. If not I want the list to be populated.

Next for all missing NSG’s i want to add a new tags.

Lets check it via Azure Powershell.

$resourcewithouttags = Get-AzResource -ResourceType “Microsoft.Network/networkSecurityGroups” | Where-Object {$null -eq $_.Tags -or $_.Tags.Count -eq 0} | Format-Table -AutoSize

So it gives me the 1 result back saying one of the NSG with the name: prademonsg001 does not have any tags. Lets validate the same through Azure Portal.

Let me expand prademonsg001

Which Confirms there are no tags associated.

Now lets try to add new Tags to this resource.

Now In order to add any new tags for any resource(s) we need to know the ResourceId. Lets try to get ResourceId for this NSG.

$gettingresourceIDs = Get-AzResource -ResourceType “Microsoft.Network/networkSecurityGroups”

I am specific using resourcetype as “Microsoft.Network/networkSecurityGroups” over here.

Lets try to update NSG with new Tags.

$tags = @{“Environment”=”Dev”; “Application”=”TestSoftware”}

As we may have multiple NSG’s in that case I am using “foreach” condition

Finally validate it from Azure Portal as well to make sure new Tags have been added to missing NSG’s.

In the case of creating new Tags please use “new-Aztag” Instead of “Update-aztag”

Entire Script:

$resourcewithouttags = Get-AzResource -ResourceType “Microsoft.Network/networkSecurityGroups” | Where-Object {$null -eq $_.Tags -or $_.Tags.Count -eq 0} | Format-Table -AutoSize

$resourcewithouttags

$gettingresourceIDs = Get-AzResource -ResourceType “Microsoft.Network/networkSecurityGroups”

$Output = $gettingresourceIDs.Id

$Output

$tags = @{“Environment”=”Dev”; “Application”=”TestSoftware”}

foreach ($Output in $Output){

Write-Host “Processing “$condition”” -ForegroundColor Black -BackgroundColor white

Update-Aztag -ResourceId $Output -Tag $tags -Operation Merge

}

--

--