Back in May 2013, we discussed an issue which caused the Hyper-V Did Not Find Virtual Machines To Import error. Well, as mentioned in that blog post there are a few reasons for this error message being displayed and it does depend on the versions of Hyper-V in use.
There were some comments posted (thanks again for that by the way!) which mentioned an issue with importing VMs into Windows Server 2012 R2 and Windows 8.1. I thought it may be worth bubbling this up again now that Windows 8.1 is available and people may be running into the same import issue. Ideally we can raise awareness so that we can plan the right approach.
The issue is that VMs which were previously exported from Windows Server 2008 or Windows Server 2008 R2 Hyper-V cannot be imported into Windows Server 2012 R2 Hyper-V and Windows 8.1. Please note that the same VMs could be imported into Windows Server 2012 Hyper-V (note the missing R2 there) without any issue.
Update 2-12-2013: Added new post to walk through the conversion process using Server 2012.
Let’s take a peek at the issue, and then discuss what we can do!
For the purposes of this post, let’s try and import a VM called AD1HC1. This was successfully exported from Windows Server 2008 R2 Hyper-V. Currently this VM and all its associated files reside in the G:\VMs\AD1HC1 folder. The various files can be seen here:
There are no hidden tricks and this is an exported VM that can be imported to Windows Server 2008 R2 without issues, and has been many times.
If we use the GUI and try to import the VM into Windows 8.1
We get the following error:
Hyper-V did not find virtual machines to import from location ‘G:\VMs\AD1HC1’
When reviewing what Process Monitor sees on the file system, there are no Access Denied error messages. We are able to read the disk and review the files contained within.
If the files exist on the disk and we can read them, what’s up then? For the eagle eyed out there, you may be wondering why the .exp file has not been read…..
If you wrote scripts to import/export Windows Server 2008 Hyper-V VMs, there is a small clue in the Hyper-V section located in the Features Removed or Deprecated in Windows Server 2012 page on TechNet. **
Windows Authorization Manager (AzMan) is deprecated. You may need to use new management tools for virtual machines or redesign the authorization model.
And if we then look at the same section in the Features Removed or Deprecated in Windows Server 2012 R2
So the WMI v1 namespace was deprecated in Windows Server 2012, and then removed in Windows Server 2012 R2. Why is this important? When the Export call was made to export the VM from Windows 2008 R2, the WMI v1 namespace was used. This can be seen with a PowerShell snippet which binds to the Hyper-V WMI Namespace.
$VMManagementService = Get-WmiObject -Namespace root\virtualization -Class Msvm_VirtualSystemManagementService -ComputerName $HyperVHost
In a post on the Hyper-V TechNet forum there are some details worth reading from Taylor Brown, and if you don't already read his blog the RSS feed is here.
VM's that are exported from Windows Server 2008 or 2008 R2 utilized the version 1 WMI namespace which resulted in an .exp file to represent the exported virtual machine. In Windows Server 2012 we introduced a new WMI namespace (version 2 or root\virtualization\v2) which implemented a much better import/export model – allowing you to effectively just copy the virtual machine folder (with the VM’s XML configuration file inside it) as well as the VM’s VHDs and then import that directly. For Windows Server 2012 we maintained the version 1 WMI namespace which allowed for importing of Windows Server 2008/R2 VM’s on 2012.
In Windows Server 2012 R2 we have removed the old version 1 namespace which means we can’t import virtual machines that where exported from Windows Server 2008/R2.
As you can see, VMs that were exported from Windows Server 2008 & 2008 R2 cannot be imported as-is into Windows Server 2012 R2 or Windows 8.1.
Don’t Panic Captain Mainwaring, Don’t panic! ***
Don’t panic as there are options!! Let’s look at them based on the scenario. There are two basic takes on this:
If you exported from Windows Server 2008 or 2008 R2, and the original host is still available with the VMs then probably the easiest option will be to get the VMs off that machine in a format that is easily importable to Hyper-V 2012 R2.
On the original Hyper-V server, power down the VMs. Once they have shut down, then stop the Hyper-V Virtual Machine Management Service (VMMS). This will unlock the VM’s files. Simply copy over the VM folders to the Windows Server 2012 R2 server and they can be imported. Remember this was one of the features added to Windows Server 2012 - we do not have to specifically export a VM before it can be imported. Funnily enough this functionality was added in the WMI v2 namespace for Hyper-V….
If the original server or a copy of the VMs is no longer available, there are still a couple of options. This may be the scenario if you are re-purposing the hardware and the original machine has been wiped, or if these are archived lab VMs that you are trying to import to a new version of Hyper-V.
If, and this will not apply to everyone, you have a Windows Server 2012 Hyper-V machine, the 2008 / 2008 R2 VMs can be imported to that server. Note that this is not a R2 2012 server. Since 2012 still has the WMI v1 namespace (albeit deprecated), we can import the .exp machines. Once successfully imported to 2012, the VMs can be exported or copied over to Windows Server 2012 R2. You do not need to power on the VMs after importing them to the intermediate Windows Server 2012 machine, that server is only used to perform the import thus allowing the VM to be copied to Windows Server 2012 R2.
Travis mentioned an interesting take on this in the comments below. Consider a temporary boot to VHD option just to get the necessary import step done. Thanks Travis! Would love to know if that helps folks out at all – please post a comment below!
Update 2-12-2013: Added a How To on this topic. Please see this post.
If the above method is not available, or is too time consuming, an option is to create new VM configuration and specify to use an existing virtual hard disk. By doing so we can re-use the VM’s virtual hard disk file. Since the virtual NIC now has a different GUID Windows will recognise it as a different NIC, and you will need to re-enter the IP address in the VM.
** – What is the etymology of the word deprecated? – and Wikipedia doesn’t count! Personally I prefer depreciate since the original Latin dēprecātus was to pray.
*** – If you have not seen the classic BBC comedy Dad’s Army take a look!
If you would like to have Microsoft Premier Field Engineering (PFE) visit your company and assist with the topic(s) presented in this blog post, then please contact your Microsoft Premier Technical Account Manager (TAM) for more information on scheduling and our varied offerings!
If you are not currently benefiting from Microsoft Premier support and you’d like more information about Premier, please email the appropriate contact below, and tell them you how you got introduced!
For all other areas please use the US contact point.
I just ran into that issue... I have a monster HP Elitebook with 2 SSDs and 32GB RAM which ran (with Windows 8) the Microsoft provided MOC courseware Hyper-V images like a breeze. As a MCT I was keen to get Windows 8.1 onto my machine to show my Microsoft pride to my students. Oh boy, what a stupid decision! You just gave the explanation why I cannot run the Hyper-V images anymore on my machine...
Did you try the steps under the "what to do" section?
Worst case you can create new VM configurations, and then point them to use the virtual disk from the exported VMs.
Same issue, as a MCT i must prepare many vm's and the operating system of the host machine is 8.1. Microsoft should find a solution. Thanx to Rhoderick for the (temp) solutions.
Maybe Micrsoft could write a small app that converts the exp file to a valid xml file?
An additional note to Rhoderick. Microsoft labs use Base and Mid-Tier vhds intensively. Which in turn makes any intermediate import a PITA. A small text file conversion would do the trick.
I'm in the same position as you here. I've been an MCT since '99 and know exactly what you are describing. SK - you are describing the reference disks that MSL releases and then all course specific VMs are based off that??
I also have the same issue when I deliver training to internal Microsoft folks, and to customers through premier workshops.
For those deliveries, I create the new VM and attach the existing disk as mentioned above. I do that once and then re-use it. But yes, it is an extra step.
I'll certainly provide your feedback on this to the Hyper-V folks.
BTW in terms of tools, I'm starting to see things on the Internet with the newer Hyper-V features. For example
That is from John Howard who is a program manager. It's great that these utils are being released, but they are "AS-IS"
This is covered on the T & C
Although I work for Microsoft and am a Program Manager in the Hyper-V team, I must point you to the disclaimer on my blog, the disclaimer in files associated with this project, and the license conditions at the top of this page before use. Convert-VMGeneration.ps1 and any associated files are provided "as-is". You bear the risk of using it. No express warranties, guarantees or conditions are provided. It is not supported or endorsed by Microsoft Corporation and should be used at your own risk.
So my point is, if you require full support for VMs that are important to you please use the native in-box tools and processes.
Thanx for your support Rhoderick. i'm resetting my pc to factory configuration (win8). This i the only way to install the course without problems.
That's probably the quickest thing to do right now Valerio.
I have just sent internal feedback on this. *IF* I can share anything I will.
Hi Rhoderick. An optimization to the intermediate import approach. I just tested that I can do the import on an 2012 host, then copy just the generated xml to my 8.1 host (which already contained the other files such as big vhds). It worked this way, also.
However, only the six WS 2008 R2 VMs worked. For some reason, the two Win7 VMs give an error when trying to import to the 8.1 host (using the copied xml).
I have just hit this problem trying to get the Office 2013 demo VHD to work on a Windows 8.1 Laptop.
I could not recreate the Virtual Machines as there is a lot of RRAS and IP setup with that environment that I tried and failed to get working again with new network adapters.
The solution was to import the VMs into a different Windows 8 machine first, export them again, and then they went fine into Hyper V on Windows 8.1. It took a while but worked.
Groovy - glad that you got it working Matt & SK.
That is listed in the Perform Intermediate Import section. is it clear or does it need to be more explicit?
I could not import the virtual machine and it could not find the virtual machines after upgrade, But after steting the path in general settings to the main directory of the old virtual machines it found them all. But I really have problem with network function that worked before. It seems like upgrade to 8.1 really blows everythings out.
Do you still have the virtual networks defined?
Can this tool help us ?
We can convert the old machines to new ones.