Three old virtual servers were showing as VM Additions Not Detected in System Center Virtual Machine Manger 2012 SP1 (VMM).
Choosing to Install Virtual Guest services didn’t resolve the problem as they were already listed in Add Remove Programs and installed. Mouse integration was working without having to use CTRL-ALT-LEFT, but I was unable to use the Shut Down command from VMM.
Device Manager showed no errors, but the Event Log was showing errors for the failure of the following services to start: Hyper-V Heartbeat, Hyper-V Data Exchange, Hyper-V Guest Shutdown, Hyper-V Time Synchronization and Hyper-V Volume Shadow Copy Requestor.
A closer looked showed two Hyper-V integration components entries in Add Remove Programs: Hyper-V Integration Services (version 6.2.9200.16384) and Microsoft Hyper-V Guest Components.
I chose to uninstall both components. Following a reboot I re-installed the Hyper-V Integration Services using VMM. Following this everything worked correctly.
In Windows Server 2012 the binaries for Features on Demand e.g. the .Net Framework 3.5 are not installed as part of Windows. When you enable this type of feature Windows will attempt to contact Windows Update to download the required files. If you’re working on a server that’s not connected to the internet this can be problematic. One work around is to use Group Policy to specify an ISO file as an alternate file source.
Mount the Windows Server ISO into the virtual machine
Open the local Group Policy editor by typing gpedit.msc at the Start Screen
Navigate to Computer Configuration -> Administrative Templates -> System
Open the “Specify settings for optional component installation and component repair” setting
Enable the setting and type the path to the sxs folder on your ISO file.
View this KB for further information http://support.microsoft.com/kb/2734782/en-gb
As all the virtual machines I create using Hyper-V have the same hardware I decided to investigate the PersistAllDeviceInstalls option for unattend.xml.
The PersistAllDeviceInstalls setting configures whether the Plug and Play devices are uninstalled during the generalize phase and then reinstalled during the specialize pass of the sysprep process. As all the virtual machines have the same hardware there’s no need to reinstall the Plug and Play devices and the result is a faster virtual machine deployment.
I created a fresh virtual server template with the PersistAllDeviceInstalls setting set to true and compared the setup time to the same template with PersistAllDeviceInstalls set to false.
With PersistAllDeviceInstalls set to false the setup time was 2:28. With PersistAllDeviceInstalls set to true the setup time was 1:54, a small, but 23% saving in setup time.
If you want to add the PersistAllDeviceInstalls setting to unattend.xml here’s my example.