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″]