Managing Hyper-V with WMI
June 12, 2008 at 3:06 PM
—
Andy Schneider
Dung K Hoang has an excellent series of blog posts on how to manage Hyper-V with WMI.
I have taken a couple of his scripts and built a function that takes input from the pipeline and gives me an object that has three properties, a HostServer, VirtualMachine, and a Switch.
1: function Get-HyperVInfo { 2: begin { 3: $VmSwitchinfo = @();
4: }
5: process { 6: $computer = $_
7: $ListofVMs = gwmi -namespace root\virtualization Msvm_ComputerSystem -filter "ElementName <> Name" -computer $computer
8: $ListofSwitches = gwmi -namespace root\virtualization Msvm_VirtualSwitch -computer $computer
9: $ListofSwitchPorts = gwmi -namespace root\virtualization Msvm_SwitchPort -computer $computer
10: foreach ($Switch in $ListofSwitches)
11: { 12: $SwitchGUID = $Switch.Name
13: $SwitchDisplayName = $Switch.ElementName
14: $PortsOnSwitch = $ListofSwitchPorts | where {$_.SystemName -match $SwitchGUID} 15:
16: foreach ($Port in $PortsOnSwitch)
17: { 18: $PortPath = $Port.__PATH
19: $ListofConnections = gwmi -namespace root\virtualization Msvm_ActiveConnection -computer $computer
20: $a = $ListofConnections | where {$_.Antecedent -like $PortPath} 21: if ($a -ne $NULL)
22: { 23: $LANEndPoint = $a.Dependent
24: foreach ($VM in $ListofVMs)
25: { 26: $VMGUID = $VM.Name
27: $VMDisplayName = $VM.ElementName
28: if ($LanEndPoint -like "*$VMGUID*")
29: { 30:
31: $vminfo = "" |Select-Object VirtualMachine ,HostServer, switch
32: $vminfo.Switch = $SwitchDisplayName
33: $vminfo.VirtualMachine = $VMDisplayName
34: $vminfo.HostServer = $_
35: $vmswitchinfo += $vminfo
36:
37: }
38: }
39: }
40: }
41: }
42:
43:
44: }
45: end { 46: $vmswitchinfo
47: }
48: }
To use this function you can just do something like this
"HVSERVER1","HVSERVER2","HVSERVER3" | Get-HypervInfo
I have used this script to get a bunch of information on all the VM's in my Hyper V Cluster. Note that this is just using WMI so I can query my Server Core machines that are running Hyper V.
Many Many thanks to Dung for this info. I would not have even been able to get started without his help.
d13133b8-78d5-4a90-abee-37d3e803b4de|1|4.0
Posted in:
Tags: