In a cloud environment, the effective way to organize and manage your infrastructure is by tagging your resources. Example, if your client has multiple silos like marketing, sales etc., and your cost model is different to each silo, tagging the resources provides an effective way to measure and manage the cost for your client.
Use the below code to TAG your Azure virtual machine:
$resource_group = "resourceGroupName" $vm_name = "virtualMachineName" $tags = (Get-AzureRmResource -ResourceGroupName $resource_group -Name $vm_name).Tags $tags += @{toolsinstalled="true"} Set-AzureRmResource -ResourceGroupName $resource_group -Name $vm_name -ResourceType "Microsoft.Compute/VirtualMachines" -Tag $tags -Force
You may tag other resources (Storage Account, Virtual Network etc.,) by providing the correct values to “-ResourceType” parameter.
If you have a set of standard tags and you want to tag all virtual machines in a resource group, then use the code below as a template:
Param( ## Parameter declaration [string]$resource_group, # Tag values passed as a parameter [string]$rtb_status_tag_value, [string]$os_type_tag_value, [string]$environment_tag_value, [string]$build_date_tag_value, [string]$project_name_tag_value, [string]$support_type_tag_value ) $azure_vm_list = get-azurermvm -ResourceGroupName $resource_group foreach($azure_vm_list_iterator in $azure_vm_list){ $tags = (Get-AzureRmResource -ResourceGroupName $resource_group -Name $azure_vm_list_iterator.name).Tags # Creating a hash table with tag name and value $tags += @{"RTB status"=$rtb_status_tag_value} $tags += @{"OS Type"=$os_type_tag_value} $tags += @{"Environment"=$environment_tag_value} $tags += @{"Built Date"=$build_date_tag_value} $tags += @{"Project Name"=$project_name_tag_value} $tags += @{"Support Type"=$support_type_tag_value} "Setting tags"| write-output Set-AzureRmResource -ResourceGroupName $resource_group -Name $azure_vm_list_iterator.name -ResourceType "Microsoft.Compute/VirtualMachines" -Tag $tags -ApiVersion '2017-12-01' -force }