You'd think this would be a feature part of the Scheduled Task in vCenter.
If using vSphere 5 and vCenter (let's say the VM is called Fax Server):
UpgradeHW.ps1
---
Set-ExecutionPolicy RemoteSigned
Connect-VIServer yourvcenterservernamehere -User YourUserNamehere -Password YourPassWordhere
#Stop the VM
Get-VM "Fax Server" | Stop-VM -Confirm:$false
Start-Sleep -Seconds 120
#Upgrade the VM
Get-VM "Fax Server" | Get-View | % { $_.UpgradeVM("vmx-08") }
Start-Sleep -Seconds 120
#Power-up the upgraded VM
Start-VM -VM "Fax Server"
-----
Figure 2 minutes for it to shutdown then start upgrade, then within 2 minutes power it up. Try it out.
Put it in a bat file called UpgradeHW.bat
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSconsolefile "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -command C:\scripts\UpgradeHW.ps1
Have fun.