Quite some time ago I created a PowerCLI function to help me determine VMware Tools versions of queried VMs using PowerCLI. The tools version is returned as a 4 digit number by the vSphere API, and subsequently, so does PowerCLI. This makes determining VMware Tools versions at a glance, a bit of a hassle.
The original function was able to output Tools versions up to ESXi 4.1 u1 or u2, and this week was the first time I had a good use case for this script. I needed more up to date mappings, so I have updated the function to work with VMware tools versions all the way up to ESXi 5.5 now.
Here is the latest script:
# Mapping file found at: http://packages.vmware.com/tools/versions
Function Get-VMToolsMapped() {
Get-VMToolsMapped -VM MYVMNAME
.EXAMPLE
PS F:\> Get-VMToolsMapped MYVMNAME
.EXAMPLE
PS F:\> Get-VM | Get-VMToolsMapped
.EXAMPLE
PS F:\> Get-Cluster "CLUSTERNAME" | Get-VM | Get-VMToolsMapped
.LINK
http://www.shogan.co.uk
.NOTES
Created by: Sean Duffy
Date: 05/02/2014
#>
[CmdletBinding()]
param(
[Parameter(Position=0,Mandatory=$true,HelpMessage="Specify the VM name you would like to query VMware Tools info for.",
ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
[String]
$VM
)
process {
$Report = @()
New-VIProperty -Name ToolsVersion -ObjectType VirtualMachine -ValueFromExtensionProperty 'config.tools.ToolsVersion' -Force
$VMInfo = Get-VM $VM | Select Name, ToolsVersion
Switch ($VMInfo.ToolsVersion) {
9344 {$ESXMapping = "esx/5.5"}
9226 {$ESXMapping = "esx/5.1u2"}
9221 {$ESXMapping = "esx/5.1u1"}
9217 {$ESXMapping = "esx/5.1"}
9216 {$ESXMapping = "esx/5.1"}
8396 {$ESXMapping = "esx/5.0u3"}
8395 {$ESXMapping = "esx/5.0u3"}
8394 {$ESXMapping = "esx/5.0u2"}
8389 {$ESXMapping = "esx/5.0u1"}
8384 {$ESXMapping = "esx/5.0"}
8307 {$ESXMapping = "esx/4.1u3"}
8306 {$ESXMapping = "esx/4.1u3"}
8305 {$ESXMapping = "esx/4.1u3"}
8300 {$ESXMapping = "esx/4.1u2"}
8295 {$ESXMapping = "esx/4.1u1"}
8290 {$ESXMapping = "esx/4.1"}
8289 {$ESXMapping = "esx/4.1"}
8288 {$ESXMapping = "esx/4.1"}
8196 {$ESXMapping = "esx/4.0u4 or esx/4.0u3"}
8195 {$ESXMapping = "esx/4.0u2"}
8194 {$ESXMapping = "esx/4.0u1"}
8193 {$ESXMapping = "esx/4.0"}
7304 {$ESXMapping = "esx/3.5u5"}
7303 {$ESXMapping = "esx/3.5u4"}
7302 {$ESXMapping = "esx/3.5u3"}
default {$ESXMapping = "Unknown"}
}
$row = New-Object -Type PSObject -Property @{
Name = $VMInfo.Name
ToolsVersion = $VMInfo.ToolsVersion
ESXMapping = $ESXMapping
}
$Report += $row
return $Report
}
}
If you have any issues copying and pasting the script from this post, here is a direct download you can use too:
[download id=”28″]


