How to Set Up Hyper-V Integration Services on Windows Server 2012 R2

Hyper-V Integration Services (IS) are a suite of drivers and services that run inside the virtual machine guest OS to enable communication between the VM and the Hyper-V host. Without Integration Services, a VM is isolated from the host — it cannot receive graceful shutdown signals, synchronise time, exchange data with the host, or report health status. Integration Services are essential for any production virtual machine and should be installed and kept up to date on all VMs.

Integration Services Components

Windows Server 2012 R2 Hyper-V Integration Services include the following components:

  • Operating System Shutdown: Allows the Hyper-V Manager and PowerShell to gracefully shut down the VM without power cycling. Without this, only “Turn Off” (force power off) is available
  • Time Synchronisation: Synchronises the VM’s system clock with the host. Important for domain-joined VMs — though Active Directory time sync through the domain hierarchy is typically preferred, requiring this service to be carefully configured on domain controllers
  • Data Exchange (KVP): Enables key-value pair data exchange between host and guest. Allows the host to read VM configuration data (IP addresses, OS version, hostname) from outside the VM
  • Heartbeat: Provides regular heartbeat signals from the guest to the host, allowing Hyper-V to detect unresponsive VMs and take corrective action in clustered environments
  • Backup (Volume Shadow Copy): Enables VSS-based backup of the VM from the host without shutting down the VM. Required for application-consistent backups using Windows Server Backup or third-party tools
  • Guest Service Interface: Enables file copying between host and guest using PowerShell’s Copy-VMFile cmdlet (does not require network access)

Prerequisites

  • Windows Server 2012 R2 Hyper-V host
  • Guest VMs running a supported OS (Windows or Linux)
  • Administrative access to both host and guest VMs

Step 1 — Check Current Integration Services Status

View which Integration Services are enabled for a VM from the host:

Get-VMIntegrationService -VMName "AppServer01" | Select-Object Name, Enabled, PrimaryStatusDescription | Format-Table -AutoSize

The PrimaryStatusDescription shows whether the Integration Service is communicating successfully with the guest (OK) or not (No contact indicates the service is not running inside the VM or not installed).

Step 2 — Enable Integration Services on a VM

Enable all Integration Services for a VM:

Enable-VMIntegrationService -VMName "AppServer01" -Name "Operating System Shutdown"
Enable-VMIntegrationService -VMName "AppServer01" -Name "Time Synchronization"
Enable-VMIntegrationService -VMName "AppServer01" -Name "Data Exchange"
Enable-VMIntegrationService -VMName "AppServer01" -Name "Heartbeat"
Enable-VMIntegrationService -VMName "AppServer01" -Name "Backup (Volume Shadow Copy)"
Enable-VMIntegrationService -VMName "AppServer01" -Name "Guest Service Interface"

Enable all Integration Services at once:

Get-VMIntegrationService -VMName "AppServer01" | Enable-VMIntegrationService

Step 3 — Disable Specific Integration Services

For domain controllers, disable Time Synchronisation to prevent the domain controller’s time from being overridden by the host:

Disable-VMIntegrationService -VMName "DomainController01" -Name "Time Synchronization"

The domain controller should sync time from the PDC emulator through the AD hierarchy instead of from the Hyper-V host.

Step 4 — Install Integration Services in the Guest OS

For Windows guest VMs, Integration Services are installed automatically when you install the Hyper-V guest drivers. On Windows Server 2012 R2 guests running on a Windows Server 2012 R2 host, the drivers are built into the OS and do not require separate installation.

For older Windows guests (Windows Server 2008/2008 R2, Windows 7), install Integration Services from within the VM:

# From the Hyper-V host, mount the Integration Services ISO to the VM:
Set-VMDvdDrive -VMName "OlderServer" -Path "C:WindowsSystem32vmguest.iso"

Then connect to the VM console and run the setup from the mounted DVD drive.

Step 5 — Update Integration Services

Integration Services are updated through Windows Update on Windows guest OSes. Check the current version inside the guest VM:

# Run inside the guest VM:
Get-WmiObject -Class "Win32_PnPSignedDriver" | Where-Object { $_.DeviceName -like "*Hyper-V*" } | Select-Object DeviceName, DriverVersion

Alternatively, check the registry inside the guest:

# Inside the guest VM:
Get-ItemProperty "HKLM:SOFTWAREMicrosoftVirtual MachineAuto" | Select-Object IntegrationServicesVersion

For the best practice, ensure Windows Update is enabled and the “Hyper-V Integration Services” optional update is installed on all guest VMs.

Step 6 — Use the Guest Service Interface (Copy-VMFile)

The Guest Service Interface allows copying files from the host to the guest without network access. This is useful for bootstrapping VMs that don’t yet have network access:

# Copy a file from the host to the VM:
Copy-VMFile -VMName "AppServer01" -SourcePath "C:ScriptsSetup.ps1" -DestinationPath "C:WindowsTempSetup.ps1" -CreateFullPath -FileSource Host

Step 7 — Use KVP Data Exchange to Read VM Information

The Data Exchange (KVP) service allows the host to read key-value pairs from the guest, including IP addresses, hostname, and OS version:

# Read KVP data from the host:
$VM = Get-WmiObject -Namespace "rootvirtualizationv2" -Class "Msvm_ComputerSystem" | Where-Object { $_.ElementName -eq "AppServer01" }
$KVPComponent = $VM.GetRelated("Msvm_KvpExchangeComponent")
$GuestData = $KVPComponent | Select-Object -ExpandProperty GuestIntrinsicExchangeItems
$GuestData | ForEach-Object {
    [xml]$Item = $_
    Write-Host "$($Item.INSTANCE.PROPERTY[0].VALUE) = $($Item.INSTANCE.PROPERTY[1].VALUE)"
}

Step 8 — Verify Heartbeat Status

# Check heartbeat status for all running VMs:
Get-VM | Where-Object { $_.State -eq "Running" } | ForEach-Object {
    $Heartbeat = Get-VMIntegrationService -VMName $_.Name -Name "Heartbeat"
    [PSCustomObject]@{
        VM = $_.Name
        HeartbeatEnabled = $Heartbeat.Enabled
        HeartbeatStatus = $Heartbeat.PrimaryStatusDescription
    }
} | Format-Table -AutoSize

A heartbeat status of No contact on a running VM indicates the Integration Services are not functioning inside the guest — this could indicate the VM is hung, the IS service has failed, or the drivers need reinstallation.

Linux Integration Services

For Linux guest VMs, Integration Services are provided through the Linux Integration Services (LIS) package. Many modern Linux distributions (RHEL 6.5+, CentOS 6.5+, Ubuntu 12.04+, SLES 11 SP3+) include LIS drivers in the kernel. For older distributions, download and install the LIS package from Microsoft.

# Check if LIS modules are loaded inside a Linux VM:
lsmod | grep hv_

Summary

Hyper-V Integration Services are a critical component of any healthy virtual machine deployment on Windows Server 2012 R2. They enable graceful shutdown, time synchronisation, heartbeat monitoring, VSS-based backup, data exchange, and file copying between host and guest. Keeping Integration Services current and monitoring their status through Get-VMIntegrationService ensures that your Hyper-V management capabilities remain intact and that backup processes can take application-consistent snapshots without VM downtime.