主机关闭时是否挂起虚拟机?

主机关闭时是否挂起虚拟机?

当主机系统(Windows 7 Pro,最新的 VMware Workstation:9.0.1 build-894247)关闭时,我需要暂停正在运行的虚拟机(VMware Workstation 内部启用了“Workstation 关闭后保持虚拟机运行”)。使用 gpedit.msc,我添加了一个包含以下内容的关机脚本:

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

该脚本在手动执行时(虚拟机被暂停)工作正常,并且在关机时也执行(创建 c:\shutdown_script_was_executed.txt),然而当再次打开主机并启动 VMware Workstation 时,虚拟机被关闭并且不会被暂停。

知道为什么会发生这种情况吗?他们为什么不被停职?

谢谢任何提示!

答案1

解决方案:将虚拟机作为共享虚拟机运行(http://blogs.vmware.com/workstation/2012/02/vmware-workstation-8-as-an-alternative-to-vmware-server.html)并使用 Windows 关机脚本(注销不起作用(由于同样的原因,以本地管理员身份测试脚本也会失败),因为共享虚拟机是由以更高权限用户身份运行的服务执行的(可能是 SYSTEM,没有检查)。在关机脚本中使用带有挂起参数的 vmrun.exe。

答案2

这是因为时间问题。执行关机脚本时,虚拟机进程已经退出。您可以通过让关机脚本记录输出来确认这一点,输出结果vmrun list会告诉您有 0 个正在运行的虚拟机。

您可以尝试使用注销脚本而不是关机脚本,但我 90% 确定这仍然太晚了。

相关内容