Sometimes Microsoft’s efforts to help just makes things worse. I had Hyper-V configured on my computer that was running Windows 8.1. It was a simple setup with one virtual switch which allowed my VMs to connect to the University’s network. This is what Hyper-V terms an external network. I also had a dozen different VMs configured. I upgraded to Windows 10 1709 and was asked during the install if I wanted to configure Hyper-V now or later. Not knowing what this actually entailed I chose later. After the upgrade I found that all of my virtual machines were gone and the networking was broken. Apparently “configure Hyper-V later” means “rebuild it from scratch.”
It turns out the VHDs were still there but I had to create new VMs and use the existing disks. Not a huge deal but why did it wipe out the VMs during the upgrade?
The networking was more thoroughly hosed. There is a new virtual switch that is added automatically by the 1709 version of Hyper-V. It is called “Default Switch” and is an internal network. It also cannot be modified or removed. This serves no purpose for me and is just a nuisance. Worse the existing external virtual switch was converted into a private switch by the upgrade. I tried to modify it to make it an external switch and the modification failed with an invalid-parameter error. I tried to remove it and got the same error. I did some searching and found that the virtual switches are listed in the registry at “HKLM\SYSTEM\CurrentControlSet\Services\VMSMP\Parameters\SwitchList.”1 I deleted the two entries after making a registry backup by exporting the SwitchList node and then rebooted. The broken switch was now gone but the default switch was automatically recreated.
I still didn’t have networking for my VMs so I went to create a new external virtual switch. I have only one NIC so I checked the “Allow managment operating system to share this network adapter” box. Hyper-V manager put up a warning when I clicked Apply that my existing network configuration might be impacted (or words to that effect). I’m running a static IP and knew that I couldn’t rely on DHCP to restore all of the networking settings so I ran “ipconfig /all” so that the settings would be displayed in case any needed to be restored. Yup, after I clicked OK to proceed I lost network connectivity. A bit of poking around revealed that the static IP was still configured but it had lost both the DNS and WINS setting. I restored those and now have network connectivity on both the host and the guest systems.
I admit I’m neither a networking or Hyper-V guru, but one shouldn’t have to be to make basic use of these utilities. None of this should have been necessary, the upgrade should have just left my Hyper-V configuration alone (or silently done whatever changes were needed). I’ve lost a lot of time rebuilding my Hyper-V setup. That’s not my idea of software increasing one’s productivity.