My searches for a script to upgrade the VM Tools without rebooting were all more complicated than I wanted to implement. After hacking several scripts I found I was able to create a ‘simpler’ command to take care of my needs and should be easy to edit for anyone else.
Get-View -ViewType "VirtualMachine" -Filter @{"Guest.GuestFamily"="windowsGuest"; "Guest.ToolsStatus"="ToolsOld"; Guest.GuestState"="running"; "Name"="Partial_VM_Name*"} | foreach{get-VM $_.Name | Update-Tools -NoReboot}
Another option to limit selection to a particula datacenter, cluster, resource pool, host or folder.
Get-VM "OptionalFilter" -Location (Get-Cluster "OptionalFilter" ) | select @{N="Name"; E={$_.Name}}, @{N="Tools"; E={($_ | Get-View).Guest.ToolsStatus}} | where {$_.Tools -eq "toolsOld"} | foreach{get-VM $_.Name | Update-Tools -NoReboot}
Only want the output of VMs with old tools, just remove the last foreach and you’ll get a list.