我正在使用 HyperV WMI 提供程序来更新虚拟机的配置/设置(如硬件、磁盘等)
如何从 HyperV 获取 VM 的 IpAddress?
如何在 VMWare 中做同样的事情?
问候,梦想家!
我正在使用 HyperV WMI 提供程序来更新虚拟机的配置/设置(如硬件、磁盘等)
如何从 HyperV 获取 VM 的 IpAddress?
如何在 VMWare 中做同样的事情?
问候,梦想家!
(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
它不是最整洁/最干净/最好的代码,但它是获取该信息的一种方式。
这是我制作的另一种变体,以演示一种更强大的方法来查找给定名称的值。这不依赖于 Caption、Data、Description、ElementName、Name 或 Source 架构中的特定相对顺序
$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)"
}
}
}