- Print
- Comment
- DarkLight
- PDF
Downloading Tags to manage them
Article summary
Did you find this summary helpful?
Thank you for your feedback!
I have a script below which you can use to point at a resource group and download the resource tags to a csv file. The script basically goes through the resources and builds up a collection of powershell objects with a property for each of the tags i am interested in. I will then export them to the csv file.
What I usually do is to download the dev/test/etc resource groups to seperate csv files so its easier to manage them. In the spreadsheet I can then modify and add tags as I wish.
Full Script
function DownloadResources([string] $csvPath, [string] $resourceGroup)
{
$resourceDescriptions = New-Object "System.Collections.Generic.List[System.Object]"
$resources = Get-AzResource -ResourceGroupName $resourceGroup
foreach ($resource in $resources) {
Write-Host 'Processing ' $resource.Name
$resourceDescription = New-Object -TypeName psobject
$resourceDescription | Add-Member -MemberType NoteProperty -Name 'Name' -Value $resource.Name
$resourceDescription | Add-Member -MemberType NoteProperty -Name 'Type' -Value $resource.ResourceType
$governanceTags = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.Object]"
$governanceTags.Add('Tag_Environment', '')
$governanceTags.Add('Tag_costCentre', '')
$governanceTags.Add('Tag_managedBy', 'eai@acme.com')
$governanceTags.Add('Tag_documentationLink', '')
#Process Tags
if($resource.Tags -ne $null){
foreach($tag in $resource.Tags.GetEnumerator()){
$key = $tag.Key
$value = $tag.Value
#Environment
if($key.ToLower() -eq 'environment'){
$governanceTags['Tag_Environment'] = $value
}
#Data Profile
if($key.ToLower() -eq 'dataprofile'){
$governanceTags['Tag_dataProfile'] = $value
}
#costCentre
if($key.ToLower() -eq 'costcentre'){
$governanceTags['Tag_costCentre'] = $value
}
#managedBy
if($key.ToLower() -eq 'managedby'){
$governanceTags['Tag_managedBy'] = $value
}
#documentationLink
if($key.ToLower() -eq 'documentationLink'){
$governanceTags['Tag_documentationLink'] = $value
}
}
}
#Add fields for Governance Tags
foreach($governanceTag in $governanceTags.GetEnumerator()){
$csvFieldHeader = $governanceTag.Key
$csvFieldValue = $governanceTag.Value
$resourceDescription | Add-Member -MemberType NoteProperty -Name $csvFieldHeader -Value $csvFieldValue
}
#Additional Properties for useful info and ID which is used when uploading the tags
$resourceDescription | Add-Member -MemberType NoteProperty -Name 'Id' -Value $resource.Id
$resourceDescription | Add-Member -MemberType NoteProperty -Name 'ResourceGroup' -Value $resourcegroup
$resourceDescriptions.Add($resourceDescription)
}
$resourceDescriptions | Export-Csv -Path $csvPath -NoTypeInformation
}
#Dev
$path = $PSScriptRoot + '\Resources.Dev.csv'
$resourceGroup = 'MyRG-Dev'
DownloadResources -csvPath $path -resourceGroup $resourceGroup
Was this article helpful?