Get-View to speed up things using regex
I was playing around with the get-view cmdlet and found something I didn’t know yet.
On the site there is an example
Get-View -ViewType VirtualMachine -Filter @{"Name" = "VM"}
Cool, let’s test that. Hey , why do I get 2 items returned?
I searched for a VM called “Test” and there returned 2 VM’s which are started with “Test”.
I didn’t know that, in the description of the filter object you see:
Specifies a hash of <name>-<value> pairs, where <name> represents the property value to test, and <value> represents a regex pattern the property must match. If more than one pair is present, all the patterns must match.
Ah…
So let’s throw some regex in then:
One way to tighten our patterns is to define a pattern that describes both the start and the end of the line using the special ^ (hat) and $ (dollar sign) metacharacters. Maybe not the best option but it works fine.
To do an exact match on “Test””we use : “^Test$”
Now let’s start exact match on Test and do a reset of the VM:
(get-view -ViewType VirtualMachine -Filter @{"name"="^Test$"}).ResetVM()
Cool that works, I’m no regex expert, but the way mentioned above works, because the start..end of the line only exists of VM names.
It would be nicer to use a word boundary so you capture the word only and not the line.
So we can also use \bServername\b:
get-view -ViewType VirtualMachine -Filter @{"name"="\bTest\b"}
Both options work, but may come in handy for the future.
So what I learned, the filter object can be ‘regexed’ !