In addition to providing the drivers and components required for the most optimal
utilization of resources between the guest and the hypervisor, other integration
services exist, as described in the following list. Note that each service can be disabled
if required through the settings of the virtual machine in the Management ➣
Integration Services section. Unless there is a specific reason not to, you should leave
Integration Services enabled.
Operating System Shutdown Enables the guest operating system to be cleanly
shut down from the Hyper-V manager or the management interfaces that Hyper-V
provides, such as PowerShell and WMI.
Time Synchronization Keeps the time of the guest OS synchronized with the
host operating system.
Data Exchange Allows the exchange of specific Registry location values between
a guest and the parent partition, known as key-value pairs. The Hyper-V host
writes to location HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Virtual
Machine\Guest\Parameters within the VM, and the OS in the guest can then read
from this location to gather information about the host. This information includes
the Hyper-V hostname (which is the cluster name if it’s a cluster node), version
information, its fully qualified name, and the actual VM’s name and ID, as shown
in Figure 5.32. This can easily be read using PowerShell. For example, within a
virtual machine, to find which Hyper-V host it is on, I use the following PowerShell
command:
$regPath = "HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters"
(Get-ItemProperty -Path $regPath).HostName
Figure 5.32 Registry within a virtual machine showing information about the host
Conversely, the Hyper-V host reads information from
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Virtual Machine\Auto in the guest, which
is populated by the guest OS, giving Hyper-V a lot of information about the OS,
including version, naming, and IP configuration. This type of information exchange
can be useful for many types of management operations, automation, and inventory.
The complete list of values can be found at the following location, which documents
the Msvm_KvpExchangeDataItem class: