如何从具有Powershell的Hyper-V 2008 R2节点获取IP地址和Vlan ID

我尝试使用此命令从Hyper-V(Hyper-V 2012)节点获取IP地址:

Get-VM | select -ExpandProperty networkadapters | select vmname, ipaddress

问题是我只将输出的私有IP地址作为输出,而不是某些虚拟机的公有IP地址。 任何想法,为什么我有这个问题?

还有什么办法可以在我的虚拟机设置中获得相同的输出和Vlan ID? 为了从特定的虚拟机获得Vlan,我可以这样做

Get-VM 'Name of the VM' | Get-VMNetworkAdapterVlan | select AccessVlanId

所有这些东西都在Hyper-V 2012上,我还希望为Hyper-V 2008 R2做这个工作。 因此可能需要对命令进行一些更改。

没有Hyper-V 2012可供我testing,至less可以解决PowerShell问题的一部分:

 Get-VM | select -ExpandProperty networkadapters | Foreach-Object { $_ | AddMember -MemberType NoteProperty -Name VLAN -PassThru -Value ($_ | Get-VMNetworkAdapterVlan).AccessVlanID } | ft vmname, ipaddress, vlan 

我讨厌在这里引入链接,但是您应该查看适用于Hyper-V 2008R2的James O'Neils PowerShell库。 可以节省一些时间。

pshyperv.codeplex.com