powershell 列出VM的网络适配器时,powercli能否告诉我VM名称是什么?

f1tvaqid  于 2023-01-02  发布在  Shell
关注(0)|答案(1)|浏览(136)

我希望获得一个配置了给定VLAN名称的VM列表,以便在使用ACI回滚VLAN时,可以确定它已经消失。
此脚本可以正常工作,我使用powercli连接到vCenter并传入vlan_name:

foreach ($vm in Get-VM){
  $nic = Get-NetworkAdapter -VM $vm.name
  if ( $nic.NetworkName -eq "{{ vlan_name }}" ){
    echo $vm.name
  }
}

问题是,这是一个O(n)排序的算法,需要很长的时间来运行(我有数千个VM和数百个VLAN)
最烦人的是
第一个月
快速列出所有vlan,但不输出vm名称。
有没有办法让网络适配器使用VM?

wztqucjr

wztqucjr1#

此PowerShell列出了虚拟机名称、网络适配器及其连接的网络类型。

PowerShell

Get-VM | Get-NetworkAdapter | Select-Object @{N="VM";E={$_.Parent.Name}}, Name, Type;

Get-VM | Get-NetworkAdapter | Select-Object Parent, Name, Type;

样品输出

VM                      Name                 Type
--                      ----                 ----
fserver3                Network adapter 1 Vmxnet3
pserver2                Network adapter 1 Vmxnet3
hserver2                Network adapter 1 Vmxnet3
lserver22               Network adapter 2 Vmxnet3
server1                 Network adapter 1 Vmxnet3
server2                 Network adapter 1 Vmxnet3

PowerShell(筛选网络名称)

Get-VM | Get-NetworkAdapter | Where-Object {$_.Name -eq "vlan_name"} | Select-Object @{N="VM";E={$_.Parent.Name}},Name,Type;

支持资源

相关问题