I have been using VMware off and on for years mostly to maintain environments for older version of BizTalk like BizTalk 2009 and BizTalk 2010. That said, I have been stuck using VMware version 9 because I did not want to keep paying the upgrade fees each year to get the latest version.  With my recent upgrade to Windows 10, my VMware 9 installation ran into some issues.  I was no longer able to connect to an internet connection inside the VM.  I decided the time was right to migrate to Hyper-V on Windows 10.

I found a lot of articles about converting vmkd files to a vhdx but they seemed to state you needed to use Microsoft Virtual Machine Converter witch in the GUI and in the online documentation talked about only supporting VMware Server products. 

The reality is Microsoft Virtual Machine Converter works for direct conversion of a single vmkd file into a vhdx.  The catch is you need to use the PowerShell command and not the GUI.

If you want to convert a single VMKD file into a VHDX file do the following:

  1. For each Virtual Machine you want to convert, first remove the VM Tool and do a full shutdown
  2. Remove VMware from your computer (if you install Hyper-V first you will run into un-installation issues with VMware.  You’ll have to edit the undeploy script to remove it)
  3. Enable Hyper-V Windows 10  
  4. Download and install Microsoft Virtual Machine Converter 3.0 (Link)
  5. Open PowerShell or PowerShell ISE as an Administrator
  6. Enter the following (update the paths and file names as needed):
    Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
    ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "D:\YourPathToVMKD\ZZZZ.vmdk" -DestinationLIteralPath "C:\PathToVHDX"
  7. This process will take about an hour for a 50 GB disk.  See the image below.
  8. Once complete, create a new Generation1 Hyper-V virtual machine using the newly created vhdx image

PS: While this post is targeted toward virtual machines running locally, at this point 90% of my virtual machines are hosted in Azure using BizTalk 2013 / BizTalk 2013 R2.  I only use virtual machines for maintaining legacy environments.

Hope this helps someone out!