2011-11-02 128 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)" 
     } 
     } 
    }