VDI to VHD/VHDX – Convert VirtualBox VMs to Hyper-V

If you want to use or migrate VirtualBox virtual machines to Hyper-V on Windows 10 or Windows servers, follow this guide. We can’t discuss the direct export or import migration methods since both products run on different platforms. We have to convert the hard disk of the VM from VirtualBox, then attach to Hyper-V.

As an alternate method, we can use any P2V tools to directly convert the VirtualBox VM to Hyper-V (Considering that VirtualBox VM is running on physical hardware). But, in this guide, we will convert the VDI file to VHD to achieve this task.

Microsoft Hyper-V doesn’t support VDI (VirtualBox hard disk file) file type, therefore it should be converted to VHD (MS Virtual Disk format) or VHDX. Here, I’m going to show how to convert a working Windows VM from VirtualBox to VHD and attach to Hyper-V.

We do not need any third party software for this conversion since the built-in VirtualBox command will do the job well.

Steps to Convert VDI to VHD (VirtualBox to Hyper-V)

Note: It is recommended to uninstall the VirtualBox guest additions from the VM before starting the migration. It may cause an issue on the Hyper-V platform.

VirtualBox snapshots keep separate VDI files for each machine. So if you convert the original base VDI file, you will not get the latest state of the virtual machine. Also, you can’t convert snapshot VDI files separately. Therefore it’s recommended to delete snapshots, that will merge current machine’s state to the single original disk file.

We Can Convert in 2 Ways,

  1. Using the VirtualBox Media manager
  2. Using the command line tool.

VDI to VHD by VirtualBox Media Manager

1) Click on File in VirtualBox and open Virtual Media Manager.

Open VM Media Manager

Obviously, the VM should be powered off before proceeding further.

2) Select the appropriate disk that is attached to the VM you want to migrate. Click on Copy.

Copy VDI

3) In the next disk copy option, select the VHD file format as output.

Select VHD Format

4) Next screen gives the option to make the disk dynamic or fixed size. If you are familiar with a Virtualization platform, you must be aware of them. For testing and less disk usage, you can try dynamically allocated disks. For production and high disk utilization usage, always use the fixed disk option.

5) Select the path of the VHD file and start copying. It will start copying/cloning the selected VDI file to VHD disk format.

Now you have the VHD file which converted from VDI by using GUI screens.

Convert VDI to VHD in Command Prompt (VirtualBox Tool)

1) Once the prerequisites are met (like uninstalling guest additions, deleting snapshots and powering off the VM), run the following command from the VirtualBox installation location.

vboxmanage clonehd WinXP.vdi F:\winxp.vhd --format VHD

WinXP.vdi – Working VM hard disk

F:\winxp.vhd – Destination and file name of VHD

The above command returned the following error.


2) This is because it is attached to one virtual machine and listed in the virtual media manager. Release and remove the disk from virtual media manager (Note – Do not remove the VDI file from physical hard disk).

Run the command again, it will return following the successful conversion message.

convert VDI to VHD

VDI to VHD then VHDX

If you want the latest and recommended file format of Hyper-V which the VHDX, you can convert VHD to VHDX by using Hyper-V disk utility.

The steps are simple and you can refer to this guide.

So basically you need to convert the VDI to VHD by using VirtualBox tools, then the VHD to VHDX by Hyper-V disk tool.

Attach the Disk to Hyper-V VM

Remember, as mentioned earlier this is not the export-import way. We have just converted the disk to VHD which is compatible for Microsoft Hyper-V.

a) Create a new VM in Hyper-V. Setup the hardware configuration as you wish, but instead of creating a new virtual hard disk, you must attach (browse) the converted VHD or VHDX to the VM configuration.

Attach the VHD file

2) Power on the virtual machine. Since the hardware platform (VirtualBox to Hyper-V) is changed for the Operating System, it may install additional drivers and tools for its platform. Restart the VM if required. Make sure to installation Hyper-V guest additions to get better performance and features.

Here is the screenshot of working same virtual machines on both desktop virtualization software.

desktop virtualization software

It hardly took 5 minutes to convert this working machine (2GB VDI) to Virtual PC. Some blogs and forums mentioned about third-party software to convert VDI to VHD, but it can be done easily by VirtualBox command as shown here. I hope this guide is helpful.

If any of the above solutions did not fix the Windows PC issues, we recommend downloading the below PC repair tool to identify and solve any PC Issues.

Dinesh is the founder of Sysprobs and written more than 400 articles. Enthusiast in Microsoft and cloud technologies with more than 15 years of IT experience.

16 thoughts on “VDI to VHD/VHDX – Convert VirtualBox VMs to Hyper-V”

  1. HI ,
    This is a Good tool. This works fine. Only issue i have faced when running this without uninstalling Guest Additions. (Not always but some time ). So better to uninstall that as mentioned above.

    Good show Dinesh !!! 🙂

    • @G,
      Thanks for your comment and keep reading my blog.
      Yes, I never took chance without removing guest additions. Its always better to remove guest additions from any software (VMware, VB, VPC) before conversion.

  2. Hi Dinesh, i had a problem regarding this. When i put in the command, it says it says invalid parameters “F:\Windows Xp”…. what to do…..

  3. Is the below command applies to mac too? I have virtual box on Mac, planning to move t Virtual PC. since you all moved to virtual PC, is it better than virtual box?


    • This is just for the people who want to move the VirtualBox VM to Virtual PC, I don’t say virtual PC is better than VirtualBox. VirtualBox is much better than virtual pc.
      I think vboxmange command will be same in Mac host also, I’m not sure.
      Please check in helps and process.

      Good luck.

  4. Hey, great guide but how do you get the command prompt to recognize the command “vboxmanage”? Sorry, I’m a bit slow and I need help :(. Thanks you so much!!

  5. Hi, thanks for the very nice guide, however I have this error message in cmd

    ‘vboxmanage.exe’ is not recognized as an internal or external command, operable program or batch file.

    thanks for the help

    • mark,
      You need to add virtualbox working folder (C:\Program Files\Oracle\VirtualBox) to PATH under Environment Variables in Advanced Settings of Windows System.

      Or you run the command from where its located ( again its under VirtualBox program folder)

      • Thanks a lot, i was able to convert ubuntu.vdi to ubuntu.vhd with the following command in C:\Program Files\Oracle\VirtualBox>

        vboxmanage clonehd “C:\Userx\username\.Virtualbox\filename.vdi” “C:\Userx\username\.Virtualbox\filename.vhd” –format VHD

        However, it was not good enough to run ubuntu 10 on WVPC as mouse, keyboard, and other integration cannot be connected ^_^

        Thanks a lot again for the knowledge you’ve shared to us ^_^ More Power!!! ^_^

  6. I always get this error:

    VBoxManage.exe: error: Cannot register the hard disk ‘C:\Program Files\Oracle\Vi
    rtualBox\test.vdi’ {ba4b0377-907f-470f-80ae-13e5f27a8137} because a hard disk VBoxManage.exe: error: Cannot register the hard disk ‘C:\Program Files\Oracle\Vi
    rtualBox\test.vdi’ {ba4b0377-907f-470f-80ae-13e5f27a8137} because a hard disk ‘C
    :\FreeBSD 7.1\FreeBSD 7.1.vdi’ with UUID {ba4b0377-907f-470f-80ae-13e5f27a8137}
    already exists
    VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component Virtua
    lBox, interface IVirtualBox, callee IUnknown
    Context: “OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadW
    rite, pMedium.asOutParam())” at line 209 of file VBoxManageDisk.cpp’ with UUID {ba4b0377-907f-470f-80ae-13e5f27a8137}
    already exists
    VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component Virtua
    lBox, interface IVirtualBox, callee IUnknown
    Context: “OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadW
    rite, pMedium.asOutParam())” at line 209 of file VBoxManageDisk.cpp

    Even if I delete C:\FreeBSD 7.1\FreeBSD 7.1.vdi’ the error shows up…

  7. i have made a Batch file and put this in it (for me the vdi file is into C:tempvirtualbox):

    @echo off
    cd C:program filesoraclevirtualbox
    vboxmanage clonehd C:tempvirtualboxserversd02.vdi C:tempvirtualboxservervd02.vhd –format VHD

  8. is it possible to use this tool for converting FROM Microsoft VPC to VirtualBox? We have couple of pc’s who are failing to run XP Mode and we need to run some software that’s not compatible with Windows 7, so I’m hoping to use an image from a machine that does run an XPMode vm file (.vhd)

  9. when it says format to vhd, will that literally format and erase the virtual hd or just convert it to vhd?

Comments are closed.