我知道我可以使用以下命令在命令行上暂停给定的 VMware 虚拟机:
vmrun suspend /path/to/virtual_machine_file.vmx
有什么办法可以暂停全部一次使用多个虚拟机vmrun
?类似vmrun suspend all
?
答案1
好吧,我本来希望得到一个简单的答案,但是由于没有答案,所以我编写了自己的脚本。希望这对某些人有帮助!它是用 ruby 编写的 - 运行时,它将调用vmrun list
以获取所有正在运行的虚拟机的列表,删除第一行(“Total running VMs: x”),然后调用vmrun suspend
所有剩余的行。
#!/usr/bin/ruby
VMRUN='/usr/bin/vmrun'
vms = []
open("|#{VMRUN} list") do |p| vms = p.readlines.map {|l| l.chomp } end
vms.shift
vms.each do |vmxfile|
print "Suspending #{vmxfile}"
system("#{VMRUN} suspend #{vmxfile}")
end
答案2
Windows 批处理文件版本的答案在这里(第 3 篇文章): http://communities.vmware.com/thread/92951?tstart=0
我没有直接复现该解决方案,因为它借用了上述链接中原作者的代码,他们值得称赞。我只是采用了他们的做法,并对其进行了调整,使其暂停所有正在运行的虚拟机(原始脚本暂停、备份和恢复)。
答案3
我只是需要一种方法来做到这一点,这里给我的提示是 vmrun。我的简单命令行解决方案(来自 VMware 目录):
for /f "tokens=* skip=1" %a in ('vmrun list') do vmrun suspend "%a"
如果在 bat 文件中:
for /f "tokens=* skip=1" %%a in ('vmrun list') do vmrun suspend "%%a"