I was trying to help out a colleague yesterday when I realized that a quick fix to the problem would be to tag the datastore clusters in our environment and get them based on these tags instead of trying to determine which datastore cluster to choose when deploying a VM from PowerCLI.
So I decided to do this quickly and will show what I did (code snippets are from my vSphere 6.0 lab but the it is the same on our 5.5 production).
New-TagCategory -Name "CDC" -Cardinality Single -EntityType DatastoreCluster New-Tag -Name "DC2" -Category CDC Get-DatastoreCluster DatastoreCluster | New-TagAssignment -Tag "DC2"
Now I hope we can agree that I have created a new TagCategory that applies to Datastore Clusters and allows for one tag per object. We have also created a tag in this category called “DC2”. Lastly we have added the tag to the datastore cluster “DatastoreCluster”. Now if I run the following I get what I would expect:
C:\> Get-DatastoreCluster DatastoreCluster | Get-TagAssignment Tag Entity --- ------ CDC/DC2 DatastoreCluster C:\>
But if I run this I get something that I did not expect
C:\> Get-DatastoreCluster -Tag "DC2" C:\>
This means that it is not working the same as for Virtual Machines with the “get-vm” cmdlet:
C:\> New-TagCategory -Name "VMTest" -Cardinality Single -EntityType VirtualMachine Name Cardinality Description ---- ----------- ----------- VMTest Single C:\> New-Tag -Name "Test" -Category "VMTest" Name Category Description ---- -------- ----------- Test VMTest C:\> Get-VM testvm01 | New-TagAssignment Test Tag Entity --- ------ VMTest/Test testvm01 C:\> get-vm | Get-TagAssignment Tag Entity --- ------ VMTest/Test testvm01 C:\> get-vm -Tag "Test" Name PowerState Num CPUs MemoryGB ---- ---------- -------- -------- testvm01 PoweredOff 1 4,000
So I do not know if this is the way it was meant to work but I is definitely not what I expected!