The way to do things before was painful – you had to use Windows Update to update the VMGuest.ISO which then you had to mount inside the guest and run the update from the VMGuest.ISO and reboot the VM. This had to be done manually on each VM.
You could use System Center Virtual Machine Manager (SCVMM) which allowed for batch reboots.
In Windows Server 2016 things have changed for the better – Windows Update will automatically update the integration components inside the VM if you are running any of the OSes below:
- Windows Server 2016
- Windows 10
- Windows Server 2012 R2
- Windows 8.1
If you are running an older OS like below you need to enable the Data Exchange Integration service and make sure it is running:
- Windows Server 2012
- Windows 8
- Windows 7
- Windows Vista SP2
But now we have another scenario – what if I live migrated my VMs from Windows Server 2012 /2012 R2 to Windows Server 2016? Will Windows update work from the start ? Well, not really. So what we need to do is to update manually the integration services by downloading the latest version of the integration services as a cab file from the Microsoft Download Center here: https://support.microsoft.com/en-us/help/3071740/hyper-v-integration-components-update-for-windows-virtual-machines-tha and run a PowerShell cmdlet:
Add-WindowsPackage -Online –PackagePath <path to .CAB file>
This can now be automated via Powershell to be done in batches on all VMs.