Powershell

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

  • June 19, 2019

到目前為止,我已經發現管道這些 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 屬性。

引用自:https://serverfault.com/questions/972002