I’m a big fan of remediating VMTools using vLCM (vSphere Lifecycle Manager), but some customers want to have the capability to script the process, not want to reboot the VM right away.
In the upcoming instructions, these are performed in my personal HomeLab. I have a handful of VMs in a CSV file I will create a variable with, take a snapshot, install VMTools silently and not reboot the VM so that it can be rebooted at a later date such as a Guest OS patch window or planned maintenance window.
Please be sure to always follow VMware By Broadcom best practices and always test in a lab environment.
The following 6 VMs saved in a CSV file on my local drive.

The following script is straightforward, it will take the VMs and create a variable, then use that variable to create your snapshots and eventually perform the Tools Update silently with no reboot.
#Creating a variable containing VM Objects from a CSV file
$VMToolsPatching = Get-Content C:\scripts\VMToolsList.csv
#Take Pre-Upgrade Snapshots
Get-VM -Name $VMToolsPatching | New-Snapshot -Name "VmTools Lifecycle" -Description "Snapshot for VMTools lifecycle" -Memory:$false -Quiesce:$false -Confirm:$false
#Perform VMTools Updates
Get-VM -Name $VMToolsPatching | Update-Tools -NoReboot
Once the snapshot and patching complete, the VM should not reboot, however the VM’s Summary page will show the Tools version is Current

On a Windows machine, if you log onto the desktop, you will find the VMTools icon indicates a small reboot icon and inform it’s pending a reboot.

There are many options for rebooting the VM once you can determine a maintenance window.
Alternate Reboot Options
While these are not the only options, nothing beats good Ol ‘fashion ‘Restart Guest OS’ via Tools, but want to share a couple of options, ultimately the solution may depend on number of VMs or fits operational procedures.
One feature in vSphere 8.0 u3 is scheduling tasks on individual VMs such as the following

If you have VCF Operations (formerly Aria & vRealize) you can use Automation Central to schedule the reboot of one or many VMs. The following is just an example of a configured Action to Reboot VMs.
