2014-02-25 74 views

回答

0

您是否在guest虛擬機上安裝了集成組件?如果你不這樣做,請儘快安裝。之後,IC是最新的,您可以查詢從VM註冊表中的主機信息,像這樣,

gp 'HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters' 
HostName       : hyperv100.contoso.local 
HostingSystemEditionId    : 8 
... 
PhysicalHostName     : hyperv100 
PhysicalHostNameFullyQualified  : hyperv100.contoso.local 
VirtualMachineName     : guest101 

(gp 'HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters').PhysicalHostName 
hyperv100 

(gp 'HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters').PhysicalHostNameFullyQualified 
hyperv100.contoso.local 

此外,閱讀描述IC registry keys的文章。

+1

這與原提問者所要求的相反,我認爲 – plmeister

+1

正如Rohan所說,您是否對此有任何答案..我的Hyper-v具有虛擬機。我想在hyper-V上提取主機名(我們通過在虛擬機上的cmd上運行「hostname」命令獲得)。但是在我的Hyper-V上,我只能找到HKLM:\ SOFTWARE \ Microsoft \ Virtual Machine \ Guest密鑰,而不是HKLM:\ SOFTWARE \ Microsoft \ Virtual Machine \ Guest \ Parameters我已經在每個虛擬機上安裝了集成組件。 –

+0

@AccessDenied Hyper-V guest虛擬機可能有一個名稱與實際guest虛擬機主機名無關。因此,解決方案是查詢客戶是否託管在特定的Hyper-V節點上,並使用該信息構建客戶列表。 – vonPryz

0

一種方法是獲取虛擬機的IP地址,並從中查詢主機名。我使用單個命令查找主機名爲:

$VMName = "TestVMName" 
$host_name = ((Get-VM | where { $_.Name -eq $VMName }) | Select -ExpandProperty NetworkAdapters).ipaddresses[0] | ForEach-Object {([system.net.dns]::GetHostByAddress($_)).hostname } 

確保您的虛擬機在網絡中可被發現。