0

Вытаскиваем IP-адреса гостевых машин Windows под hyper-v

Набросал небольшой скриптик, который получает список ip-адресов гостевых машин Windows, которые работают под hyper-v.
Основа взята отсюда — http://blogs.technet.com/b/m2/archive/2010/07/29/how-to-get-the-ip-address-of-a-virtual-machine-from-hyper-v.aspx
Помогает узнать какой подлец «нелегально» отхватил IP :)

$vms = ( get-vm * | where { $_.State -ne "Off"  -and $_.State -ne "Saved" } ).Name
    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
    }
for ($i=0; $i -lt $vms.count; $i++)
{


$query="Select * From Msvm_ComputerSystem Where ElementName='" + $vms[$i] + "'";
$VmObj = Get-WmiObject -Namespace root\virtualization -Query $query;
$KvpObj = Get-WmiObject -Namespace root\virtualization -Query "Associators of {$VmObj} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_KvpExchangeComponent"


$vmip = $KvpObj.GuestIntrinsicExchangeItems | Import-CimXml | where { $_.Name -eq "RDPAddressIPv4" }
$vmos = $KvpObj.GuestIntrinsicExchangeItems | Import-CimXml | where { $_.Name -eq "OSName" }
if ( ![string]::IsNullOrEmpty($vmip.Data))
    {
    $vms[$i] + " " + $vmip.Data + " | OS: " + $vmos.Data
    }
}

XpycT

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *