Move our MOC courses environment to Windows Server 2012 Hyper-V

As mentioned we spend too much time for our classes’ setup.

We need something to improve “our lives”.

This BIG something is Windows Server 2012 Hyper-V.

Importing VMs is now easier and you can override the hardlinks to the folders.

It means that Course and/or Base vhd’s can be stored on another location (other hdd’s or volumes) then C:\program files\Microsoft Learning.

If you put the base vhd’s on another volume then the one with the OS (containing windows folder).

You can also try disk deduplication that will use less space (estimated used space reduction can be over 70%).

If base and moc vhd’s are on different hdd’s you will get some speed improvement.

The PowerShell V3 support will help us a lot.

File copying in Windows Server 2012 (with SMB3 support) is another strong point.

Speed and constant transfer (with graphic GUI and speed info) will help us during the copy to student pc’s phase.

A gigabit switch is the most recommended option, even if the cables are not cat6 (an entry level  gigabit switch and  cat 5/5e cables will do the job).

Also the possibility to manage transfers is great. You can stop one or more transfer to help a desired one to finish faster.

And the greatest of all is transfer channel protection.

If you have a transfer problem (you restart by mistake the pc with source for the file transfer or you move a cable and is the wrong one),

the transfer can be continued when the source is visible again without any loss of info.

But we have so many scenarios, so what we can do (some scenarios are not supported by Microsoft)?

Let’s see…


Scenario 1 – Courses VMs use physical pc OS Hyper-V

Standard courses designed for the Windows Server 2008 Hyper-V environment where we import the VMs in the physical pc OS Hyper-V will work even better on our Windows Server 2012 Hyper-V.

In case a VM is capable of using Dynamic memory allocation (depends on the OS and application used in it), we can use now the new features “starting memory” combined with minimum and maximum size of virtual RAM of the VM.

The result will be a better performance for the same amount of physical memory and sometimes more VMs supported on the same host pc.

Also we will have the performance advantage of the new synthetic network adapter if used in the VMs.

Another thing you might discover is that import is no longer dependent to the .exp file from the machine export folder.


Scenario 2 – Courses VMs use a “boot from vhd” OS Hyper-V

Courses like 10750 and 10751 (System Center 2012 courses with a nightmare setup) or other Server 2012 virtualization courses like 10215 that are based on the same technique, use some “boot from vhd” as host for the course VMs.

You install Hyper-V on these “boot from vhd” and import the course VMs in them.

These courses will work very well in this environment, where the physical host is a Windows Server 2012.

Despite the fact that the vhd used for this “boot from vhd” are based on Windows Server 2008R2 they have no problem working on a pc where the boot file was created by a Windows Server 2012.

One BIG note: use IDE and not AHCI in Bios to reduce the problems with this courses “boot from vhd” environments.


Scenario 3 – Courses VMs use a Virtual Server 2005

If you are in the unhappy situation to setup a course which needs Virtual Server 2005, don’t worry is not a dead end.

You do not need to install you classroom with an old XP environment, you only need some more steps.

First we need a VHD with a Windows Server 2008R2SP1. We need to make some adjustments in the local policy to allow Virtual Server 2005 to be installed on Windows Server 2008 (a scenario not supported by Microsoft, but you can find the info on the web).

You can find a good start on Ben Armstrong’s Virtualization Blog – Installing Virtual Server 2005 R2 SP1 on Windows 7 .

Also the course install msi files need an adjustment (with Orca from Microsoft office sdk or other msi editor extend the OS’s supported – also a scenario not supported by Microsoft).

For info and download can find info here and here.

We install Virtual Server 2005 and the course files.

Optionally install additional support for pdf and maybe 7zip for easy access inside archives (zip, msi, iso, rar).

Finally we sysprep the the OS with generalize and shutdown (not restart)

Now we can copy the vhd on diferent pc’s and use the vhd as a “boot from vhd” on our Windows Server 2012.

We start in Windows Server 2012 (host OS of the pc) and make a copy of the vhd before starting it on the pc and put it on the rest of the pc’s.

Then we prepare the “boot from vhd” environment.

We boot in Windows Server 2012, mount the vhd in Server Manager, Tools, Computer Management, Disk Management and retain the letter associated to the mounted vhd.

We will use it in the bcdboot command. Assuming that letter associated would be f, the command will be:

bcdboot f:\windows

Next we want to change the description which appears in boot menu to “Windows Server 2008R2wSP1 and Virtual Server 2005” for our the “boot from vhd” environment.

Bcdedit /set {default} description “Windows Server 2008R2wSP1 with Virtual Server 2005”

Now the default boot option is our “boot from vhd” crated before.

We move to the first student pc where we already copied the vhd locally and redo the steps for creating the “boot from vhd” environment.

Note: Having the commands saved in a notepad .txt file that can be used for copy&paste to command prompt on other pc’s can help save some time and avoid typo mistakes.

We can step to the next pc’s and do the same.

All the pc’s have the whole course install embedded in the vhd used for “boot from vhd”.


Scenario 4 – Courses need to be on our host Windows Server 2008 or Windows 7, or we need to create a sandbox to avoid modification on the physical pc (as in dev courses)

Is the same as the previous scenario but we do not install Virtual Sever 2005 and we do not need modifications in local policy.

We need to create a syspreped VHD with optional additional software that can be installed and function after sysprep.

If we need we can install features and role in the OS of this vhd.

Note: In case we install Hyper-V role do not create any logical networks (switches) as they will not be recognized after sysprep.

You need to delete and recreate them on the new pc when we use it as a “boot from vhd”.

Note: Several vhd’s used for “boot from vhd” can be on the host hdd.

We can expose all of them as “boot from vhd” or we can hide some of them by deleting their entries them from boot list with bcdedit or msconfig.

Boot tab from msconfig can be used to modify default boot option and delete entries from the boot menu. (optionally we can do all this from bcdedit command line).


Live is too short, don’t waist it on classroom setups!


Florin Nicolescu