按端口镜像设置列出所有 VM PowerShell

List all VM's by their port mirroring settings PowerShell

我正在寻找一种方法来按虚拟机使用 PowerShell 设置的镜像类型列出机器上的所有虚拟机。

例如:

Get-VM -PortMirroring Source

我会看到所有具有网络适配器且端口镜像设置为源的虚拟机。 但是我知道 Get-VM 不会将 PortMirroring 作为参数,所以我想知道是否有解决方法?

这并不容易,因为 PortMirroring 不是 VM 的 属性,而是其网络适配器的 属性。您需要迭代 VM 的网络适配器并输出至少有 1 个适配器 PortMirroringMode 设置为 "Source" 的 VM。

$vms=get-vm
$filteredVMs=@()
foreach ($vm in $vms) { 
   $nas=get-vmnetworkadapter -vm $vm # adapter list
   foreach ($na in $nas) {
       if ($na.PortMirroringMode -eq 'Source') {
           $filteredVMs+=$vm
           break 
       }
   }
}

这对我有用:

get-vm | Get-VMNetworkAdapter | Where-Object {$_.PortMirroringMode -eq 'Source'}