The Tagging feature was introduced in vCenter Server 5.1 where custom defined tags can be categorized and added to any of your inventory objects in your environment.
Tags can be quickly searched on and retrieved quickly. Multiple unique tags can be used on the same inventory object creating granular metadata that can easily be grouped and search on.
As an example this is helpful for looking for all VMs tagged against a particular project or placing all departmental objects into groups, IE HR requiring not just there VMs but networking and datastores used as well, This all benefits the administrator by simplifying management and making information more easily available.
In PowerCLI 5.5 R1 we introduced some cmdlets for working with tag assignments and easily allowing multiple inventory objects to be tagged or removed from a tag in an automated fashion.
Tag Cmdlets
An initial discovery shows 4 new tag cmdlets to work with inventory objects, but don’t forget that you can also use some of the existing cmdlets with tag information as well, such as Get-VM –Tag “Gold”.
Get-VM/VMHost/Datastore/VirtualPortGroup/VDPortGroup
These cmdlets now have tag parameter
The following example returns all VMs with a tag of “Gold”.
Get-VM –Tag Gold
The following example returns all VMs with a tag of “Gold”.
Get-Tag
The following example returns all tags named “MyTag”.
Get-Tag -Name MyTag
The following example returns all tags from the “MyCategory1” and “MyCategory2” categories, named “MyTag”.
Get-Tag -Category MyCategory1, MyCategory2 -Name MyTag
Get-TagAssignment
The following example retrieves all tag assignments for the $datastore entity that have tags from the “MyCategory” category.
$myDatastore = Get-DataStore MyDatastore
Get-TagAssignment -Entity $datastore -Category MyCategory
New-TagAssignment
The following example can be used to assign the “MyTag” tag to all virtual machines whose name contains the “*myvm*” wildcard pattern.
$myTag = Get-Tag MyTag
$myVM = Get-VM ‘*myvm*’
New-TagAssignment -Tag $myTag -Entity $myVM
Remove-TagAssignment
The following example removes all connections to tags from the specified virtual machine entity.
$myVM = Get-VM myvm
$myTagAssignment = Get-TagAssignment $myVM
Remove-TagAssignment $myTagAssignment
See them in action
In the below video we show how to use these cmdlets to easily tag some virtual machines and retrieve tag information for a number of virtual machines with PowerCLI.