2011-11-02 146 views

回答

3
  1. This article介绍如何获取IP虚拟 机将Hyper-V使用PowerShell地址(Windows 2008 R2上的Hyper-V)。
  2. 使用的PowerCLI:(get-vm <name of your vm>).guest.ipaddress
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 

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

+0

该查询必须运行作为管理员(至少在Windows 8上) –

0

下面是一个替代的变体,我制作了一个更强大的方法来找到给定名称的值。这并不靠的标题,数据,描述的ElementName,名称或来源

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