![通过 PowerShell 可靠地将 Hyper-V 内部交换机与主机网络适配器关联起来](https://linux22.com/image/615234/%E9%80%9A%E8%BF%87%20PowerShell%20%E5%8F%AF%E9%9D%A0%E5%9C%B0%E5%B0%86%20Hyper-V%20%E5%86%85%E9%83%A8%E4%BA%A4%E6%8D%A2%E6%9C%BA%E4%B8%8E%E4%B8%BB%E6%9C%BA%E7%BD%91%E7%BB%9C%E9%80%82%E9%85%8D%E5%99%A8%E5%85%B3%E8%81%94%E8%B5%B7%E6%9D%A5.png)
Hyper Get-VMSwitch
-V cmdlet 返回具有 NetAdapterInterfaceDescription 属性的 VMSwitch 对象,但该属性仅适用于物理类型的交换机。
对于内部类型的交换机,此属性为空。主机上的虚拟适配器和 VMSwitch 之间唯一明显的关系是名称 - 例如,对于交换机“Foo”,默认适配器名称为“vEthernet (Foo)”。
但是,网络适配器可以重命名。我查找了与交换机相关的输出上的其他值,Get-NetAdapter
但没有成功。
是否有其他 cmdlet 或 API 可以将内部 Hyper-V 虚拟交换机与主机网络适配器匹配?
答案1
我最终自己偶然找到了答案。我可以使用:
$VMAdapter = Get-VMNetworkAdapter -ManagementOS -SwitchName Foo
这将返回一个VMInternalNetworkAdapter
具有属性的对象DeviceId
。然后我可以MSFT_NetAdapter
使用以下命令可靠地获取相应的对象:
Get-NetAdapter | Where-Object { $_.DeviceID -eq $VMAdapter.DeviceId }