Skip to main content

August 25, 2026

Automate VMDK to VHD Conversion for App Volumes Packages and Writable Volumes

App Volumes has a standalone executable which automates the conversion of App Volumes VMDK application packages and Writable Volumes to the VHD format. You can use this executable if you want to migrate your existing volumes from VMDK to VHD or migrate to a hypervisor that supports only the VHD format.

This standalone executable is installed using App Volumes Utilities installer. When the executable is run in a Windows Terminal with administrator privileges, the datastore VMDK is accessed, converted to a local monolithic VMDK, and then finally converted to the VHD format. There is no manual intervention required.

In versions earlier than App Volumes 2603, to migrate a VMDK to VHD you need to first convert the datastore VMDK to a local monolithic VMDK and then use the Application Capture Command-Line program to convert the local monolithic VMDK to the VHD format. Using the standalone executable helps avoid manual and multiple conversion steps.

Prerequisites

  • Ensure that you are aware of the functionalities which are not available after migrating a Writable Volume from VMDK to VHD. For more information, see Limitations when migrating a Writable Volume from VMDK to VHD.

  • Ensure that you have the latest VMware Virtual Disk Development Kit (VDDK) libraries.

    To obtain the VDDK, see this Obtain the VDDK libraries.

  • If a VMDK is present in a datastore, then a datastore ID is required to locate the VMDK.

    • If the datastore is in a VMware vCenter Server, a Managed Object Reference (moRef) is required to locate and access the VMDK in the vCenter Server. If the datastore is in a VMware ESXi host, then the UUID of the datastore is used.

    • There are two ways of getting the datastore ID: use a PowerShell module which retrieves these values from the datastore or manually fetch these values from the vCenter Server or ESXi host. For information regarding the procedure to fetch the datastore ID, see this Fetch the datastore ID.

  • Microsoft Visual C++ 2015-2022 Redistributable

    • If you run the MSI installer in the silent mode, then you must ensure that you install the redistributable prior to the MSI.

    • When you use the wizard to run the MSI installer, these redistributables get automatically installed as part of the installation.

Obtain the VDDK libraries

  1. Navigate to the Broadcom SDK page.

  2. Download the VDDK for Windows.

  3. From the downloaded folder, extract all the files.

  4. Go to the bin folder, copy all the folder content, and paste them in this location: <installdirectory>\Utilities\libs.

When you run the executable, these VDDKs are used.

Go back to the Prerequisites section.

Fetch the datastore ID

There are two ways of getting the datastore ID: use a PowerShell module which retrieves these values from the datastore or manually fetch these values from the vCenter Server or ESXi host.

Use the PowerShell module

VMware.VimAutomation.Core is a Windows PowerShell module which retrieves the datastore ID. To install the module, open the Windows PowerShell console with administrator privileges and run the following commands:

  1. Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force

  2. Install-Module VMware.VimAutomation.Core

When you run the executable, this PowerShell module retrieves the datastore ID (moRef or UUID) .

Manually fetch the datastore ID

  • To obtain the moRef from the vCenter Server, perform the following steps:

    1. Access the ServiceInstance of the vCenter Server.

    2. In the Properties table, go to ServiceContent, and click content.

    3. Navigate to the rootFolder and click the Datacenter managed object.

    4. Note the datastore moRef.

  • To obtain the UUID from the ESXi host, perform the following steps:

    1. Log into the ESXi Host Client.

    2. Navigate to the required datastore.

    3. Make note of the UUID.

When you run the executable, you need to provide the datastore ID (moRef or UUID) as the PowerShell module is not used.

Go back to the Prerequisites section.

Limitations when migrating a Writable Volume from VMDK to VHD

The following functionalities are not available after the conversion of a Writable Volume from VMDK to VHD:

  • Expand a Writable Volume

  • Move, Back up, or Restore a Writable Volume

For more information about these functionalities, see Working with Writable Volumes.

Procedure

  1. Download the Omnissa App Volumes ISO.

    1. Go to the Customer Connect page.
    2. Click Downloads.
    3. In the Products A-Z listing, search for App Volumes and click Download Product.
    4. In the Download App Volumes page, navigate to the desired edition, and click GO TO DOWNLOADS.
    5. In the Download Product page, download the App Volumes ISO file.
  2. After mounting the ISO, go to the Utilities folder, and run App Volumes Utilities.msi.

  3. Read and accept the End-User License Agreement and click Next.

  4. Follow the on-screen instructions and complete the installation.

  5. After the installation completes, click Finish.
    The standalone executable vmdk2vhdconverter.exe is installed at C:\Program Files\Omnissa\AppVolumes\Utilities.

  6. Open a Windows Terminal with administrator privileges, go to the location of the installed executable, and run the following command:

    OptionProcedure
    When the VMDK is present locallyRun the following command:
    • Using the /file parameter:
      "<location_of_installation>\vmdk2vhdconverter.exe" /file "<location_of_vmdk>\filename.vmdk" /output "<location_of_vhd>\filename.vhd"

    • Using the /sourcefolder parameter:
      "<location_of_installation>\vmdk2vhdconverter.exe" /sourcefolder "<location_of_folder_with_VMDKfiles>" /output "<location_of_converted_VHDfiles>"

    The parameters are as follows:
    • /file - indicates the location of a single VMDK file
      With this parameter, only a single VMDK file needs to be converted.

    • /output - output location of the converted VHD

    • /sourcefolder - indicates the location of a folder that has multiple VMDK files
      If multiple VMDK files must be converted, place all the files in a single folder, and use this parameter. All VMDK files in the folder are converted.
    Note: /file and /sourcefolder parameters are case-sensitive.
    When the VMDK is present in a datastoreRun the following command:
    • Using the /file parameter:
      <location_of_installation>\vmdk2vhdconverter.exe /file "<location_of_vmdk>\filename.vmdk" /server "fqdn or ip_address of vCenter_Server or ESXi_host" /username "user_name" /password "password" /datastore-moref "datastore_ID" /output "<location_of_vhd>\filename.vhd"

    • If multiple VMDKs are present in the datastore, use the /sourcefolder parameter.

      <location_of_installation>\vmdk2vhdconverter.exe /sourcefolder "<location_of_datastorefolder" /server "fqdn or ip_address of vCenter_Server or ESXi_host" /username "user_name" /password "password" /datastore-moref "datastore_ID" /output "<location_of_converted_VHDfiles>"
    The parameters are as follows:
    • /server - location of the vCenter Server or ESXi host

    • /username and /password - credentials of the vCenter Server or ESXi host

    • /datastore-moref - moRef or UUID of the datastore where the VMDK is located.
      Note: Use the /datastore-moref parameter when the PowerShell module is not installed.

Examples of converting a VMDK volume into a VHD volume

Here are some of the examples showing the usage of the standalone executable.

Convert a locally present VMDK application package into a VHD

In the following example, a single VMDK file, emeditor.vmdk, is converted to VHD, emeditor.vhd, The converted file is placed at C:\Users\localadmin\Documents.

C:\Windows\system32>"C:\Program Files\Omnissa\AppVolumes\Utilities\vmdk2vhdconverter.exe" /file "C:\Users\localadmin\Downloads\emeditor.vmdk" /output "C:\Users\localadmin\Documents\emeditor.vhd"
Initializing VDDK...
Cloning VMDK to local monolithic VMDK format: 100% complete
Cloning VMDK to local monolithic format completed successfully.
Validating source monolithic disk [C:\Users\LOCALA~1\AppData\Local\Temp\{9875B906-81EF-4F90-BCF4-361C5B3B81E5}\emeditor.vmdk]...
Converting VMDK-[C:\Users\LOCALA~1\AppData\Local\Temp\{9875B906-81EF-4F90-BCF4-361C5B3B81E5}\emeditor.vmdk] to VHD-[C:\Users\localadmin\Documents\emeditor.vhd]...
INFO : converting vmdk to vhd: 100 %
INFO : completing vhd disk
Extracting metadata...
VHD [C:\Users\localadmin\Documents\emeditor.vhd] created successfully.
VMDK to VHD conversion completed successfully.

Convert a VMDK application package located in a datastore into a VHD

In the following example, a single VMDK file, located in a datastore, is converted to VHD. As the file is present in a datastore, the server location and credentials are required. Note that the PowerShell module is used to retrieve the datastore ID, hence the /datastore-moref parameter is not required.

C:\Users\administrator.origami-ad>"C:\Program Files\Omnissa\AppVolumes\Utilities\vmdk2vhdconverter.exe" /file "[datastore1 (8)]appvolumes/packages/Sublime!20!Text!20!Editor_pkg.vmdk" /server "10.48.15.95" /username "OrigamiAdmin@vsphere.local" /password "Ca$hc0w!" /output "C:\Users\administrator.origami-ad\Documents\Sublime.vhd"
Obtaining Server Thumbprint...
Obtaining Datastore MoRef...
Initializing VDDK...
Cloning VMDK to local monolithic VMDK format: 100% complete
Cloning VMDK to local monolithic format completed successfully.
Validating source monolithic disk [C:\Users\ADMINI~1.ORI\AppData\Local\Temp\{31FC5A54-AE80-457D-875D-75B4F7CE8251}\Sublime!20!Text!20!Editor_pkg.vmdk]...
Converting VMDK-[C:\Users\ADMINI~1.ORI\AppData\Local\Temp\{31FC5A54-AE80-457D-875D-75B4F7CE8251}\Sublime!20!Text!20!Editor_pkg.vmdk] to VHD-[C:\Users\administrator.origami-ad\Documents\Sublime.vhd]...
INFO : converting vmdk to vhd: 100 %
INFO : completing vhd disk
Extracting metadata...
VHD [C:\Users\administrator.origami-ad\Documents\Sublime.vhd] created successfully.

Convert multiple VMDK application packages located in a datastore into a VHD

In the following example, multiple VMDK files present in [Datastore 2] are converted to VHDs. The /sourcefolder parameter includes all VMDK files present in the datastore. Each of these VMDK files are converted to VHDs and placed at C:\output.

C:\Windows\System32>"C:\agent_2\appmgmt-ava-agent\guest-windows\x64\Debug\vmdk2vhdconverter.exe" /sourcefolder "[Datastore 2] appvolumes/packages" /server "10.217.66.97" /username "root" /password "AppVolumes123!" /output "C:\output"
Obtaining Datastore MoRef...
Listing VMDK files on datastore [Datastore 2] folder [appvolumes/packages]...
ConvertFolder: Found 2 VMDK file(s) to convert.
Initializing VDDK...
Converting [[Datastore 2] appvolumes/packages/Notepad!2B!!2B!.vmdk] -> [C:\output\Notepad!2B!!2B!.vhd]...
Obtaining Server Thumbprint...
Cloning VMDK to local monolithic VMDK format: 100% complete
Cloning VMDK to local monolithic format completed successfully.
Validating source monolithic disk [C:\Users\SVISHN~1\AppData\Local\Temp\{8E2C5934-1192-4002-BF97-678D21D0AAA6}\Notepad!2B!!2B!.vmdk]...
Converting VMDK-[C:\Users\SVISHN~1\AppData\Local\Temp\{8E2C5934-1192-4002-BF97-678D21D0AAA6}\Notepad!2B!!2B!.vmdk] to VHD-[C:\output\Notepad!2B!!2B!.vhd]...
INFO : converting vmdk to vhd: 100 %
INFO : completing vhd disk
Checking if disk is a writable disk...
Extracting metadata...
VHD [C:\output\Notepad!2B!!2B!.vhd] created successfully.
Successfully converted [[Datastore 2] appvolumes/packages/Notepad!2B!!2B!.vmdk].
Converting [[Datastore 2] appvolumes/packages/test.vmdk] -> [C:\output\test.vhd]...
Obtaining Server Thumbprint...
Cloning VMDK to local monolithic VMDK format: 100% complete
Cloning VMDK to local monolithic format completed successfully.
Validating source monolithic disk [C:\Users\SVISHN~1\AppData\Local\Temp\{CA7847C5-CCDC-4DC1-B49E-FD094901C987}\test.vmdk]...
Converting VMDK-[C:\Users\SVISHN~1\AppData\Local\Temp\{CA7847C5-CCDC-4DC1-B49E-FD094901C987}\test.vmdk] to VHD-[C:\output\test.vhd]...
INFO : converting vmdk to vhd: 100 %
INFO : completing vhd disk
Checking if disk is a writable disk...
Extracting metadata...
VHD [C:\output\test.vhd] created successfully.
Successfully converted [[Datastore 2] appvolumes/packages/test.vmdk].
All VMDK to VHD conversions completed.

Convert multiple VMDK Writable Volumes located in a datastore into a VHD

In the following example, multiple Writable Volumes are present in [local-240] appvolumes/writables. After conversion, the corresponding VHD files are present in c:\vhds.

C:\Program Files\Omnissa\AppVolumes\Utilities\vmdk2vhdconverter.exe /server "10.108.73.74" /sourcefolder "[local-240] appvolumes/writables" /output c:\vhds
Username: administrator@dem.internal
Password: ********
Obtaining Datastore MoRef...
Listing VMDK files on datastore [local-240] folder [appvolumes/writables]...
ConvertFolder: Found 3 VMDK file(s) to convert.

Initializing VDDK...
Converting [local-240] appvolumes/writables/DEM!5C!uia.vmdk -> [c:\vhds\DEM!5C!uia.vhd]...
Obtaining Server Thumbprint...
Cloning VMDK to local monolithic VMDK format: 100% complete
Cloning VMDK to local monolithic format completed successfully.
Validating source monolithic disk [C:\Users\guru\AppData\Local\Temp\{D46577C3-9ED7-45F4-BEF6-A045666A1784}\DEM!5C!uia.vmdk]...
Converting VMDK-[C:\Users\guru\AppData\Local\Temp\{D46577C3-9ED7-45F4-BEF6-A045666A1784}\DEM!5C!uia.vmdk] to VHD-[c:\vhds\DEM!5C!uia.vhd]...
INFO : converting vmdk to vhd: 100 %
INFO : completing vhd disk
Checking if disk is a writable disk...
Downloading companion metadata file from source...
VHD [c:\vhds\DEM!5C!uia.vhd] created successfully.
Successfully converted [[local-240] appvolumes/writables/DEM!5C!uia.vmdk].

Converting [[local-240] appvolumes/writables/DEM!5C!profile.vmdk] -> [c:\vhds\DEM!5C!profile.vhd]...
Obtaining Server Thumbprint...
Cloning VMDK to local monolithic VMDK format: 100% complete
Cloning VMDK to local monolithic format completed successfully.
Validating source monolithic disk [C:\Users\guru\AppData\Local\Temp\{BFE264DD-B1E7-449B-976B-06D2E94BE9E5}\DEM!5C!profile.vmdk]...
Converting VMDK-[C:\Users\guru\AppData\Local\Temp\{BFE264DD-B1E7-449B-976B-06D2E94BE9E5}\DEM!5C!profile.vmdk] to VHD-[c:\vhds\DEM!5C!profile.vhd]...
INFO : converting vmdk to vhd: 100 %
INFO : completing vhd disk
Checking if disk is a writable disk...
Downloading companion metadata file from source...
VHD [c:\vhds\DEM!5C!profile.vhd] created successfully.
Successfully converted [[local-240] appvolumes/writables/DEM!5C!profile.vmdk].

Converting [[local-240] appvolumes/writables/DEM!5C!uiaprofile.vmdk] -> [c:\vhds\DEM!5C!uiaprofile.vhd]...
Obtaining Server Thumbprint...
Cloning VMDK to local monolithic VMDK format: 100% complete
Cloning VMDK to local monolithic format completed successfully.
Validating source monolithic disk [C:\Users\guru\AppData\Local\Temp\{D847DD2B-6A93-4F78-9D39-98189F1B10EA}\DEM!5C!uiaprofile.vmdk]...
Converting VMDK-[C:\Users\guru\AppData\Local\Temp\{D847DD2B-6A93-4F78-9D39-98189F1B10EA}\DEM!5C!uiaprofile.vmdk] to VHD-[c:\vhds\DEM!5C!uiaprofile.vhd]...
INFO : converting vmdk to vhd: 100 %
INFO : completing vhd disk
Checking if disk is a writable disk...
Downloading companion metadata file from source...
VHD [c:\vhds\DEM!5C!uiaprofile.vhd] created successfully.
Successfully converted [[local-240] appvolumes/writables/DEM!5C!uiaprofile.vmdk].

All VMDK to VHD conversions completed.

What To Do Next

Was this page helpful?

Provide feedback for this topic

Was this topic helpful?

Please do not include any personal or confidential information.

Generating link…