Foy my new work I have to get cozy with Puppet. Puppet provides a great learning VM, however it is in a OVA format, and I need it as a VHD so I can use it with Hyper-V in my homelab.

There are several ways and utilities to convert an OVA to VHD

That script however seems to be finniky at times, depending on the OVA file. I found that the VirtualBox convert utility seems to work quote a bit easier and more reliable.

It’s as easy as this:

  1. Install VirtualBox (Just install the ‘Virtual Application’, no need for all the other stuff)
  2. Extract the VMDK from the OVA (e.g. with 7-Zip)
  3. Run this in an Admin CMD session:
    $VMDK = "c:\path\to\machine.vmdk"
    $VHD  = "c:\path\to\machine.vhd" #the utility will create the VHD for you
    & "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonemedium --format vhd $vmdk $VHD

    And voila, you should have a VHD from the OVA that you can use in Hyper-V.

EDIT: 12/10/2018

So yeah that was not enough to get it to work in Hyper-V after all. I ended up using the StartWind v2v Converter. After that the VM is still no happy, you have to start the vm in ‘rescue mode’ to get it to boot happily.