vSphere tagging via PowerCLI

Recently i had to go through tagging some VMs belonging to the same service group. Initially this is to speed up troubleshooting of performance issues within that service group but ultimately they will be used to assist with charge back to service groups/departments. This can be a very time consuming process when completed manually so i decided to script it with a little help from the VMware Technology Network and came up with the following:

#Connect to VI Server
Connect-viserver vcenter1 -user vcenteruser -pass vcenterpassword

#Create Category
New-TagCategory -Name "TEST (Clu1)" -Cardinality "Multiple" -EntityType "DistributedPortGroup, Folder, VirtualMachine"
$Category = Get-TagCategory -Name "TEST (Clu1)"

#Define CSV location
$csvPath ="C:\csv\"
set-location $csvPath
$taginfo = Import-CSV C:\csv\TestClu1.csv

#Create & Apply Tags
ForEach ($item in $taginfo)
{
$Container = $item.Container
$Name = $item.VMName
Write-Host ".... Assigning Tag to Category $category"
Get-TagCategory -Name $Category | New-Tag -Name $Container | Out-Null
Write-Host ".... Assigning Tag in Category $category to $Name "
Get-Folder $Container | Get-VM | New-TagAssignment -Tag $Container | Out-Null
}

Sections in red you will need to customize according to where you are saving your CSV. If you have multiple vCenters you will need to run this on each instance with a new CSV for each instance.  When creating your CSV the format is as follows:

“Container”,”VMName”

“SQL”,”VM1″

“AppServer”,”VM2″

Loading

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.