Как найти IpAddress виртуальной машины программно из гипервизора? - PullRequest
3 голосов
/ 02 ноября 2011

Я использую провайдера HyperV WMI для обновления конфигурации / настроек виртуальной машины (например, аппаратного обеспечения, дисков и т. Д.)

  1. Как я могу получить IpAddress виртуальной машины от HyperV?

  2. Как сделать то же самое в VMWare?

С уважением, Мечтатель!

Ответы [ 3 ]

3 голосов
/ 06 ноября 2011
  1. В этой статье описывается, как получить IP-адрес виртуальной машины из Hyper-V (Windows 2008 R2 Hyper-V) с помощью Powershell.
  2. С помощью PowerCli:(get-vm <name of your vm>).guest.ipaddress
0 голосов
/ 04 сентября 2012

Вот альтернативный вариант, который я подготовил, чтобы продемонстрировать более надежный подход при поиске значения для данного имени. Это не зависит от определенного относительного порядка в схеме заголовка, данных, описания, имени элемента, имени или источника

$vmParams = @{
  NameSpace = 'Root\Virtualization';
  Query = 'SELECT * FROM Msvm_KvpExchangeComponent' #pulls VM WMI object ExchangeComponents
}

Get-WmiObject @vmParams |
  % {
    $xml = [Xml]"<properties>$($_.GuestIntrinsicExchangeItems)</properties>"
    $xml.properties.INSTANCE.Property |
      % {
        $value = ($_.ParentNode.Property | ? { $_.Name -eq 'Data' }).VALUE
        if ($_.Value -eq 'FullyQualifiedDomainName')
        {
          Write-Host "Host: $($value)"
        }
        if ($_.Value -eq 'RDPAddressIPv4')
        {
          Write-Host "RDP Address: $($value)"
        }
      }
  }
0 голосов
/ 11 ноября 2011

Для Hyper-V именно так я обычно вытягиваю IP-адрес из окна хоста.

$vm = Get-WmiObject -computerName "." -NameSpace  "Root\Virtualization"   -query "SELECT * FROM Msvm_KvpExchangeComponent" #pulls VM WMI object ExchangeComponents
$vmitems = $vm.GuestIntrinsicExchangeItems 
$ipitem = $vmitems[-4]#yay! a hack that relies on XML schemas! 
$xmlip = [xml]$ipitem #convert string format to XML 
$ipaddr = $xmlip.INSTANCE.PROPERTY[1].VALUE #playing with XML schemas again hopefully reliably

Это не самый аккуратный / самый чистый / хороший код, но это способ получить эту информацию.

...