Hyper-v offers 3 different Virtual Switches. External, Internal and Private.
Very briefly, external allows VMs to communicate externally (bind to physical network adapter), internal only communication between VMs and host, and private only between VMs on the same host.
By default a VM uses the default Switch. This is generated automatically by Hyper-v during installation and even though it is an internal switch, it leverages a built-in NAT implementation to allow VM to reach external services.
So, for a VM to have an IP address (needed for the current system networking impl) we need to make sure the Switch used is a default one or one of type external otherwise we won't be able to connect.
Should we also allow users to set the preferred switch when starting the VM?