如何从虚拟机管理程序以编程方式查找虚拟机的IP地址?

时间:2011-11-02 19:17:02

标签: powershell wmi vmware powershell-v2.0 hyper-v

我正在使用HyperV WMI提供程序来更新虚拟机的配置/设置(如硬件,磁盘等)。

  1. 如何从HyperV获取VM的IpAddress?

  2. 如何在VMWare中做同样的事情?

  3. 此致 梦想家!

3 个答案:

答案 0 :(得分:3)

  1. This article描述了如何获取虚拟机的IP地址 来自Hyper-V(Windows 2008 R2 Hyper-V)的机器使用Powershell。
  2. 使用PowerCli:(get-vm <name of your vm>).guest.ipaddress

答案 1 :(得分:0)

对于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

这不是最好/最干净/最好的代码,但它是获取该信息的一种方式。

答案 2 :(得分:0)

这是我做的另一种变体,用于演示在查找给定名称的值时更强大的方法。这不依赖于标题,数据,描述,元素名称,名称或来源的模式中的特定相对排序

$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)"
        }
      }
  }