我使用Hyper-V的WMI提供程序來更新虛擬機的配置/設置(如硬製品,光盤等)如何從虛擬機管理程序以編程方式查找虛擬機的IpAddress?
如何從Hyper-V的獲取VM的Ip地址?
如何在VMWare中做同樣的事情?
Regards, 夢想家!
我使用Hyper-V的WMI提供程序來更新虛擬機的配置/設置(如硬製品,光盤等)如何從虛擬機管理程序以編程方式查找虛擬機的IpAddress?
如何從Hyper-V的獲取VM的Ip地址?
如何在VMWare中做同樣的事情?
Regards, 夢想家!
(get-vm <name of your vm>).guest.ipaddress
對於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
這不是最好/最乾淨/最好的代碼,但它是一種獲取該信息的方式。
該查詢必須運行作爲管理員(至少在Windows 8上) –
下面是一個替代的變體,我製作了一個更強大的方法來找到給定名稱的值。這並不靠的標題,數據,描述的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)"
}
}
}
對於VMware架構內特定的相對排序,你可以看看到PowerCLI cmdlet時 – JPBlanc