PowerShell - 获取 VMName、VMNetworkAdapter、SwitchName、IsLegacy、Vlanlist

PowerShell - 获取 VMName、VMNetworkAdapter、SwitchName、IsLegacy、Vlanlist

到目前为止,我已经发现通过管道传输这些 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 属性。

相关内容