Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
## – Use Line below to list all your Virtualization Class
#get-wmiobject -namespace “root/virtualization” -list
## – Load filter (or function first)
filter Import-CimXml{
$CimXml = [Xml]$_
$CimObj = New-Object -TypeName System.Object
foreach ($CimProperty in $CimXml.SelectNodes(“/INSTANCE/PROPERTY”)){
if ($CimProperty.Name -eq “Name” -or $CimProperty.Name -eq “Data”){
$CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE
}
}
$CimObj
}
## – Collect WMI Virtual information
$getWmiVirtual = Get-WmiObject -Namespace “rootvirtualization” -Query “Select * From Msvm_ComputerSystem” | sort-object elementname
## – Build your results from your collected objects
ForEach($v in $getWmiVirtual){
$vm = $v.ElementName;
$VmObj = Get-WmiObject -Namespace “rootvirtualization” -Query “Select * From Msvm_ComputerSystem Where ElementName=’$vm'”;
$KvpObj = Get-WmiObject -Namespace “rootvirtualization” -Query “Associators of {$VmObj} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_KvpExchangeComponent”;
if($KvpObj.GuestIntrinsicExchangeItems -ne $null){
write-host $vm;
$KvpObj.GuestIntrinsicExchangeItems | Import-CimXml | where {$_.NAME -match “NetworkAddressIPv4”} | ft;
}
}
## – End of Script