When I started my journey in IT and before I could easily spin up an environment for myself to test and tinker, I always wanted to see a side by side demonstration (preferrably video) of different products before choosing one over the other. There are many blogs and videos that only cover one product but few, if any, that actually does a side by side demo. So let’s do that!

I am using a Windows 10 virtual machine with Hyper-V management tools to administer the Hyper-V host. Alternatively Windows Admin Centre and PowerShell can also be used.

Before we get to the videos, let’s run through the steps:

The existing Proxmox environment is used to host the demo installations - HINT: nested virtualization

  1. Create three virtual machines with identical CPU and memory specs.

  2. Set a specific machine type for Hyper-V: qm set <VMID. -machine pc-i440fx-2.11

  3. Add secondary disk to all for storage

  4. Change boot to UEFI mode (optional)

  5. Install hypervisors, reboot and log into management console

  6. Configure storage for virtual machines

  7. Create and run virtual machines from nested hypervisors

Additional Hyper-V Configurations:

Reference: Remotely Manage Hyper-V Hosts with Hyper-V Manager


Hyper-V Server 2019 is a completely free offering from Microsoft and can be downloaded HERE

  1. Set a computer/host name (hyperv) and allow remote desktop connections via SCONFIG utility

  2. Create a firewall rule to allow anything from core and admin VLANs (Windows PC is on admin VLAN). You will notice that I struggle to remember the cmdlet but Get-Command comes to the rescue!

  3. Enable-PSRemoting to allow PowerShell remote commands, explained HERE

  4. Enable-WSManCredSSP -Role Server this will allow the Hyper-V server to accept remote authentication, explained HERE

  5. Make sure WinRM service is running: Get-Service winrm

  6. Restart hypervisor (mainly for the new hostname to take affect)

  7. Remote desktop to server and create partitions and file system on secondary drive. This can be achieved via RSAT tools (server manager) however it requires more configuration.

Client (Windows 10)

  1. Run PowerShell as administrator

  2. Start WinRM service: Start-Service winrm

  3. Set-Item WSMan:\localhost\Client\TrustedHosts -Value "FDQN-of-Your-Server"

  4. Optionally check DNS resolution, ping and RDP from client

  5. Enable-WSManCredSSP -Role Client -DelegateComputer "FDQN-of-Your-Server" this will allow Windows 10 to send credentials to remote server.

  6. Edit local group policy to allow delegating credentials and run gpupdate /force to apply

  7. Create a remote PowerShell session to hypervisor: Enter-PSSession -ComputerName fqdn-of-server -Credentials (Get-Credentials)

  8. Install Hyper-V Management tools and optionally RSAT tools

  9. Add cmdkey entry so that you don’t have to enter credentials every time to connect to the remote host: cmdkey /add:fqdn-of-server /username:hostname\username /pass, explained HERE


Proxmox and ESXi - Install, Configure and Create VM

Hyper-V Installation

Hyper-V - Remote Management

Hyper-V - Create VM


  • I struggle with uploading an ISO to an ESXi datastore and work around it by adding an NFS datastore that contains ISOs. Because it is a demo I don’t spend time to troubleshoot but of course this should not happen.

  • After creating the nested Hyper-V host, I have to manually change the VM’s (QEMU) machine type to pc-i440fx-2.11 otherwise Hyper-V would not start. I encountered the issue after upgrading to Proxmox 5.4 and the work-around above is also discussed here.

  • I interact with a Windows 10 desktop from the browser, this is the magic of Apache Guacamole. Guacamole provides a light and open source Virtual Desktop Infrastructure where you can connect to RDP, VNC and SSH sessions and all you need is a browser. There’s even support for text/file copy and paste. More info at guacamole.apache.org.

  • Syspass is the password manager you see in couple of videos. It is an open source project and I’ve been using it for a few months. More info can be found at syspass.org.

  • I use addresses like: mypass , myvms or mydesktop to reach different services (i.e. Proxmox cluster, Syspass password manager or Guacamole VDI). These are CNAMEs created in the internal DNS (Bind9) that resolve to an Nginx reverse proxy which will then forward to the appropriate server or service based on request uri. For example mydesktop will redirect to the Apache Guacamole VM interface on port 8443, myvms will load balance from a pool of three Proxmox servers (cluster) and redirect to one (you can see the actual Proxmox server name on the title bar).

  • I ignore PowerShell help when entering Set-Item WSMan cmdlet. It basically tells me what I am trying to achieve is not possible unless WinRM service is started and even offers to do that for me!

  • When Enter-PSSession cmdlet fails at first try, I enable a group policy, however this has nothing to do with remote PowerShell session! My mistake was that I did not use the FQDN (which I had entered in Set-Item WSMan cmdlet earlier) and also failed to provide credentials. Group policy modification is for Hyper-V Manager.

  • I seem to struggle with copying ISOs from NAS to the Hyper-V host! A little embarrassing during a demo but I finally download the ISO directly from NAS and copy to the host. This was a (weird) permission issue that I later resolved by re-assigning permission to the NTFS/NFS share.