Powershell
PowerShell - 獲取 VMName、VMNetworkAdapter、SwitchName、IsLegacy、Vlanlist
到目前為止,我已經發現管道這些 cmdlet 將為我提供我需要的一切,除了“VLANLIST”
Get-VM | Get-VMNetworkadapter | ft VMname,NAme,SwitchName,isLegacy -Autosize
如果這也能告訴我每個 vm 的網路適配器在哪個 vlan 上執行,我會非常滿意。
這個 cmdlet 可以滿足我的要求:
Get-VMNetworkAdapterVlan
但當然它不會給我 switchname 或 islegacy 值。
我找不到一種方法將該 cmdlet 與我之前介紹的那個結合起來。
什麼組合有效?
您需要使用您從單獨的命令中尋找的屬性創建一個自定義對象:
$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 屬性。