The newly updated Microsoft Virtual Machine Converter 2.0 provides two methods to convert VMware virtual machines to Hyper-V. This review covers new features, how to use them, and future expectations.

Update: Read our review of Microsoft Virtual Machine Converter 3.0

Feel stuck in a VMware environment? I certainly do. Years ago, vSphere was the only real player. Windows Server 2012 put Hyper-V front and center. How do you go from VMware to Hyper-V without wasting weeks of work? Easy! Download and install Microsoft’s Virtual Machine Converter (MVMC) 2.0.

MVMC can take you from vSphere to Hyper-V or Azure

MVMC can take you from vSphere to Hyper-V or Azure


What operating systems can MVMC migrate? More than you would think! MVMC supports every Microsoft OS from Vista forward, as well as several Linux flavors such as Red Hat and Ubuntu. You can view the full list of supported operating systems at the link above. Just be sure to download the MVMC admin guide. We will cover GUI conversion first, followed by the PowerShell method.

Convert from VMware to Hyper-V with a GUI

MVMC can convert your VMware machines to Hyper-V or Microsoft Azure. If you are migrating a VM to Azure, be sure that you have your account and subscription details handy; you will need them to complete the migration. For this post, we will be taking the more common route by migrating our machine to Hyper-V.

Launch MVMC and select Hyper-V as your destination. Specify your Hyper-V host name. If your current logged-on account doesn’t have the ability to create VMs on the host, you will need to specify alternative credentials as well.

Before the VM is converted, you will need to specify the disk location, type, and format. The most common (and default) choices are “dynamically expanding” and “VHDX.” You will then need to specify the VM source. This can be a vCenter, an ESX, or an ESXi server. Conversion is supported for vSphere 5.1 and 5.5. Once your credentials to your source server are validated, you can select any available VM and view basic resource and state information.

Selecting VMs from your VMware Source

Selecting VMs from your VMware source

If a Windows virtual machine is turned on, you will need local administrative permissions to the VM. MVMC will snapshot the machine, uninstall the VMware tools, and power off the source machine. By default, the destination machine is also powered off after migration completes. If you are migrating a Linux machine, you will need to perform those migration steps manually. Finally, specify a local folder to store the virtual hard disks during conversion. Ensure that your local machine is large enough to store this data, and then proceed to the summary page. MVMC will double-check your options and highlight any potential problems with the migration. The transition time is tied to the size of the VM. In my test environment, a 60 GB test machine took about 30 minutes.

Migration of a VM with MVMC 2.0

Migration of a VM with MVMC 2.0

Convert from VMware to Hyper-V with PowerShell

If you want to speed up your conversion from VMware to Hyper-V, you can use the MVMC PowerShell module. You will need to have MVMC 2.0 installed in order to use the MVMC cmdlets. Start by importing the MVMC module.

Import-Module “C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1”

The quickest way to begin migrating VMs is to use the sample script provided in the Microsoft Virtual Machine Converter Administration Guide on page 14. To use it in your environment, you will need to make a few changes. A slightly modified version with those changes is shown below. Be sure to create the folders mentioned in the script ahead of time and to fill out the configuration block.

Start-Transcript "c:\Test\SampleLog.log"

#Configuration Block
$SourceServer = 
$SourceVMName =
$HyperVServer = 

# establish a connection to the source server
$sourceUser= 'root'
$sourcePassword = ConvertTo-SecureString 'SecurePassword' -AsPlainText -Force
$sourceCredential = New-Object PSCredential ($sourceUser, $sourcePassword)
$sourceConnection = New-MvmcSourceConnection -Server $SourceServer -SourceCredential $sourceCredential -verbose

# select the the virtual machine to convert
 $sourceVM = Get-MvmcSourceVirtualMachine -SourceConnection $sourceConnection -verbose | where {$_.Name -match $SourceVMName}

# convert the source virtual machine
$destinationLiteralPath = 'c:\test' 
$machineDriveCollection = ConvertTo-MvmcVirtualHardDiskOvf -SourceConnection $sourceConnection -DestinationLiteralPath $destinationLiteralPath -GuestVmId $sourceVM.GuestVmId -verbose

# copy the disks and .ovf file to the destination Hyper-V host. The .ovf file contains the source virtual machine’s configuration information
# NOTE: This step is not needed on 2-box conversions, this represents a 3-box conversion.
$hyperVServerVhdPath = '\\$HyperVServer \c$\Test'
Copy-Item -Path $machineDriveCollection.Ovf.DirectoryName -Destination $hyperVServerVhdPath -recurse
$destinationLiteralPath = Join-Path $hyperVServerVhdPath $machineDriveCollection.Ovf.Directory.Name

# provision a Hyper-V virtual machine
$convertedVM = New-MvmcVirtualMachineFromOvf -DestinationLiteralPath $destinationLiteralPath -DestinationServer $hyperVServer

Stop-Transcript

This script could be modified to pull several server names from a text file or to loop through available clients. Either way, PowerShell makes migration easier.

Microsoft Virtual Machine Converter 2.0 allows you to move from a VMware world to Hyper-V. MVMC 3.0 is expected to include additional features, such as physical to virtual migration and broader OS support. If you have used MVMC to migrate your environment, what challenges did you face? What features would you like to see?

3 Comments
  1. Mark 9 years ago

    Great article Joseph.
    You mention “This script could be modified to pull several server names from a text file or to loop through available clients. Either way, PowerShell makes migration easier.” I need to migrate a large number of VM’s from VMware 5.5 to Hyper-V 2012 R2.THe Migration Automation Toolkit doesn’t support VMware 5.5. So I’m trying to automate the VM migration as much as possible with MVMC 3.0. I’d appreciate any help you could provide in scripting this.
    Thanks!

  2. Author
    Joseph Moody (Rank 3) 9 years ago

    Here is a modified script that you could use:

    Start-Transcript “c:\Test\SampleLog.log”

    #Configuration Block
    $SourceServer =
    $HyperVServer =

    #CSV should have one column with the header of names
    $importedVMs = import-csv .\vms.csv

    foreach ($importedVM in $importedVMs){

    $SourceVMName = $importedVM.name

    # establish a connection to the source server
    $sourceUser= ‘root’
    $sourcePassword = ConvertTo-SecureString ‘SecurePassword’ -AsPlainText -Force
    $sourceCredential = New-Object PSCredential ($sourceUser, $sourcePassword)
    $sourceConnection = New-MvmcSourceConnection -Server $SourceServer -SourceCredential $sourceCredential -verbose

    # select the the virtual machine to convert
    $sourceVM = Get-MvmcSourceVirtualMachine -SourceConnection $sourceConnection -verbose | where {$_.Name -match $SourceVMName}

    # convert the source virtual machine
    $destinationLiteralPath = ‘c:\test’
    $machineDriveCollection = ConvertTo-MvmcVirtualHardDiskOvf -SourceConnection $sourceConnection -DestinationLiteralPath $destinationLiteralPath -GuestVmId $sourceVM.GuestVmId -verbose

    # copy the disks and .ovf file to the destination Hyper-V host. The .ovf file contains the source virtual machine’s configuration information
    # NOTE: This step is not needed on 2-box conversions, this represents a 3-box conversion.
    $hyperVServerVhdPath = ‘\\$HyperVServer \c$\Test’
    Copy-Item -Path $machineDriveCollection.Ovf.DirectoryName -Destination $hyperVServerVhdPath -recurse
    $destinationLiteralPath = Join-Path $hyperVServerVhdPath $machineDriveCollection.Ovf.Directory.Name

    # provision a Hyper-V virtual machine
    $convertedVM = New-MvmcVirtualMachineFromOvf -DestinationLiteralPath $destinationLiteralPath -DestinationServer $hyperVServer

    }

    Stop-Transcript

  3. Mamrecab 3 years ago

    Hi.

    As you know, Microsoft published Mvmc ver 3.1 so, I want to migrate a windows server 2016 on esxi 6.5 to hyper-v that run on windows server 2019 core.Everthing is OK,but at the end in summery level I got error shows "UNC Path is not valid or does not have write permissions".I created a domin that all machine were joined to it. Also a shared path on windows core to move vm on esxi to hyper-v. Can you help me.

    Thanks.

Leave a reply to Mamrecab Click here to cancel the reply

Please enclose code in pre tags

Your email address will not be published.

*

© 4sysops 2006 - 2023

CONTACT US

Please ask IT administration questions in the forums. Any other messages are welcome.

Sending

Log in with your credentials

or    

Forgot your details?

Create Account