Windows – Suspend VMs on host shutdown

vmware-workstationwindows 7

I need to suspend running VMs when the host system (Windows 7 Pro, latest VMware Workstation: 9.0.1 build-894247) shuts down ("Keep VMs running after Workstation closes" is enabled inside VMware Workstation). Using gpedit.msc I added a shutdown script containing the following:

del c:\shutdown_script_was_executed.txt

"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" suspend "C:\myvms\sampleVM\sampleVM.vmx"
"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" suspend "C:\myvms\sampleVM2\sampleVM2.vmx"
"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" suspend "C:\myvms\sampleVM3\sampleVM3.vmx"

echo 1 > c:\shutdown_script_was_executed.txt

The script works fine when being executed manually (VMs are being suspended) and it is also executed on shutdown (c:\shutdown_script_was_executed.txt is created), however when powering on the host again and starting VMware Workstation, the VMs are powered off and not suspended.

Any idea why this happens? Why are they not suspended?

Thanks for any hint!

Best Answer

Solution: Run the VM as shared VM (http://blogs.vmware.com/workstation/2012/02/vmware-workstation-8-as-an-alternative-to-vmware-server.html) and use a Windows shutdown script (logoff won't work (testing your script as local administrator also fails due to the same reason), because shared VMs are executed by a service running as a more privilieged user (probably SYSTEM, didn't check). Use vmrun.exe with suspend parameter in the shutdown script.

Related Question