我正在尝试识别连接到内部 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
}