Here is a script for checking the version number of the VM integration components created by Microsoft software developer Stefan Wernli.


Script

 # Test if the IC version is up to date

param(

    [string]$vmName = $(throw "Must specify virtual machine name")

)

$vm = gwmi -namespace root\virtualization Msvm_ComputerSystem -filter "ElementName='$vmName'"

# Get the associated KVP Exchange component

$kvp = gwmi -namespace root\virtualization `

    -query "Associators of {$vm} where ResultClass=Msvm_KvpExchangeComponent"

# Pull the Guest Intrinsic Exchange Items from XML into a hash

$kvpHash = @{}

if($kvp.GuestIntrinsicExchangeItems){

    $xmlContents = ([xml]("<xml>"+$kvp.GuestIntrinsicExchangeItems+"</xml>"))

    foreach($instance in $xmlContents.xml.INSTANCE)

    { 

        $name = $instance.PROPERTY | where {$_.NAME -eq "Name"}

        $data = $instance.PROPERTY | where {$_.NAME -eq "Data"}

        $kvphash.add($name.Value,$data.Value)

    }

}

# Save the guest's version

$icVersionGuest = $kvpHash.IntegrationServicesVersion

# Save the host's version

$icVersionHost = (ls 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\GuestInstaller').`

    GetValue("Microsoft-Hyper-V-Guest-Installer-Win60-Package")

return -not ([version]$icVersionGuest -lt [version]$icVersionHost)

Not Detected

NOTE: If VMM displays ‘not detected’ then the VM additions are not current.



If VM’s are shutdown use the VMM GUI to install guest additions:



 

Community Resources