到目前为止,我已经发现通过管道传输这些 cmdlet 可以获得我需要的一切,除了“VLANLIST”
Get-VM | Get-VMNetworkadapter | ft VMname,NAme,SwitchName,isLegacy -Autosize
如果这还能告诉我每个虚拟机的网络适配器在哪个 VLAN 上运行,我会非常满意。
这个 cmdlet 可以完成我想要的操作:Get-VMNetworkAdapterVlan
但它当然不会给我 switchname 或 islegacy 值。
我找不到将该 cmdlet 与我之前提出的 cmdlet 结合起来的方法。
什么组合有效?
答案1
您需要从单独的命令中创建一个具有所需属性的自定义对象:
$virtualmachines = Get-VM
$vmvlans = Get-VMNetworkAdapterVlan -VM $virtualmachines
$vmnetworkinfo = @()
foreach ($virtualmachine in $virtualmachines)
{
$virtualnetworkadapters = Get-VMNetworkAdapter -VM $virtualmachine
$vmvlans = Get-VMNetworkAdapterVlan -VM $virtualmachine
$vmproperties = New-Object -TypeName PSObject
$vmproperties | Add-Member -MemberType NoteProperty -Name VMName -Value $virtualnetworkadapters.vmname
$vmproperties | Add-Member -MemberType NoteProperty -Name Name -value $virtualnetworkadapters.Name
$vmproperties | Add-Member -MemberType NoteProperty -Name SwitchName -Value $virtualnetworkadapters.switchname
$vmproperties | Add-Member -MemberType NoteProperty -Name isLegacy -Value $virtualnetworkadapters.islegacy
$vmproperties | Add-Member -MemberType NoteProperty -name VlanList -value $vmvlans.accessvlanid
$vmnetworkinfo += $vmproperties
}
$vmnetworkinfo | ft VMname,Name,SwitchName,isLegacy,VlanList
当然,您可能需要根据您的环境更改您正在寻找的 Vlan 属性。