If you use Hyper-V on your laptop, you will probably recognize this… You work at home, go to the Office and use Wi-Fi instead of the wired connection at home. You boot your VM, and… No network?! *sigh* You must change the External Switch again in your Hyper-V configuration. In this blog post, I will show you how to change it automatically using PowerShell.

How the script works
It’s a PowerShell function in which you specify the External Switch that needs a change in the network adapter it uses. The script looks for the adapter with the lowest Interface Index as the best adapter to choose and reconfigures your External Switch to use that one. If you schedule this script to run one minute after the user login, you should always have a working External Hyper-V Switch 😉
Running the script
You can run the Set-CorrectHyperVExternalSwitchAdapter function with the -SwitchName parameter followed by the External Switch name. In my case, that would be Set-CorrectHyperVExternalSwitchAdapter -SwitchName External. When done and without errors, it should state something like this:
Reconfiguring External Hyper-V Switch External to use Network Adapter Ethernet 6
The script
Below is the script that I use. Safe it to c:\scripts, for example, and create a Scheduled Task (Running as a System or a User Account with enough permissions), and you should be good to go!
function Set-CorrectHyperVExternalSwitchAdapter { param ( [parameter(Mandatory = $true)][string]$SwitchName ) #retrieve external switch(es) and get Network adapter with Up state $externalswitch = Get-VMSwitch | Where-Object Name -eq $SwitchName $connectedadapter = Get-NetAdapter | Where-Object Status -eq Up | Sort-Object ifIndex | Where-Object {$_.Name -NotMatch 'vEthernet' -and $_.Name -notmatch 'Network Bridge'} | Select-Object -First 1 #Set VMSwitch(es) properties so that the connected adapter is configured try { Set-VMSwitch $externalswitch.Name -NetAdapterName $connectedadapter.Name -ErrorAction Stop Write-Host ("Reconfiguring External Hyper-V Switch {0} to use Network Adapter {1}" -f $SwitchName, $connectedadapter.Name) -ForegroundColor Green } catch { Write-Warning ("Failed reconfiguring External Hyper-V Switch {0} to use Network Adapter {1}" -f $SwitchName, $connectedadapter.Name) } }
Download the script(s) from GitHub here
Hi Harm, I also use a couple of test hyper v VM’s on my host. I fixed this issue with making a NATswitch trough powershell. I can share it if you want!
I read a few articles about that, problem that I had was the static ip address that I had to do which was not convenient when doing autopilot vms