识别连接到特定 vSwitch 的 Hyper-V VM 网络适配器

识别连接到特定 vSwitch 的 Hyper-V VM 网络适配器

我正在尝试识别连接到内部 vSwitch 的特定网络适配器,以便随后将 DHCP 服务器角色绑定到该适配器。有 3 个网络适配器,2 个连接到外部(连接到我的笔记本电脑 Wifi 和以太网适配器)vSwitch,1 个连接到内部(仅在 VM 之间共享)。但是,从 VM 内部不容易识别它们。

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet 2                Microsoft Hyper-V Network Adapter #2          6 Up           00-15-5D-01-64-16       270 Mbps
Ethernet 3                Microsoft Hyper-V Network Adapter #3          4 Up           00-15-5D-01-64-17        10 Gbps
Ethernet                  Microsoft Hyper-V Network Adapter             5 Disconnected 00-15-5D-01-64-15        10 Gbps

任一外部适配器的状态可以是已连接或未连接,但通常为 1(最有可能是 Wifi)。在上面的例子中,它可能是“以太网 3”适配器,但那只是因为我的以太网未连接。它必须在 PowerShell 脚本(PSSession)中工作。VM 正在运行 Server 2016。如何识别要将 DHCP 绑定到的内部适配器?

多谢!

编辑:我还可以等待创建内部网络适配器,直到准备好将 dhcp 绑定到它,并在创建内部适配器之前先存储先前存在的适配器。

答案1

我知道这个问题已经过时了,但最近我创建了一个 PowerShell 脚本来解决这个问题。也许它对其他人有用。

$net_adapters = Get-NetAdapter
foreach($ethernet_port in gwmi -Namespace Root\Virtualization\V2 -Class Msvm_InternalEthernetPort){
    $endpoint_physical = gwmi -Namespace Root\Virtualization\V2 -Query "ASSOCIATORS OF {$ethernet_port} WHERE ResultClass=Msvm_LANEndpoint AssocClass=Msvm_EthernetDeviceSAPImplementation"
    $endpoint_virtual = gwmi -Namespace Root\Virtualization\V2 -Query "ASSOCIATORS OF {$endpoint_physical} where ResultClass=Msvm_LANEndpoint assocclass=Msvm_ActiveConnection"
    $ethernetswitchport = gwmi -Namespace Root\Virtualization\V2 -Query "ASSOCIATORS OF {$endpoint_virtual}  WHERE ResultClass=Msvm_EthernetSwitchPort AssocClass=Msvm_EthernetDeviceSAPImplementation"
    $vswitch = gwmi -Namespace Root\Virtualization\V2 -Query "ASSOCIATORS OF {$ethernetswitchport} WHERE ResultClass=Msvm_VirtualEthernetSwitch"

    $net_adapter = $net_adapters | ?{($_).MacAddress -replace '-','' -eq $ethernet_port.PermanentAddress}
    Write-Host "Adapter:" $net_adapter.Name 
    Write-Host "Switch:" $vswitch.ElementName
    Write-Host
}

相关内容