VMware Workstation: suspend all virtual machines with vmrun

3

I know I can suspend a given VMware virtual machine on the command line with:

vmrun suspend /path/to/virtual_machine_file.vmx

Is there any way to suspend all virtual machines at once using vmrun? Something like vmrun suspend all?

Josh

Posted 2010-03-12T21:01:38.103

Reputation: 7 540

Answers

2

Well I was hoping for an easy answer but since there wasn't one, I wrote my own script. I hope this is helpful to someone! It's in ruby -- when run, it will call vmrun list to obtain a list of all running VMs, strip off the first line ("Total running VMs: x"), and call vmrun suspend on all remaining lines.

#!/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

Josh

Posted 2010-03-12T21:01:38.103

Reputation: 7 540

2

Windows batch file version of the answer here (3rd post): http://communities.vmware.com/thread/92951?tstart=0

I didn't reproduce the solution directly due to the fact it borrows code from original authors in the above link and they deserve their credit. I just took what they did and adapted it to just suspend all running VMs (the original script suspends, backs up and resumes).

Wayne Hartell

Posted 2010-03-12T21:01:38.103

Reputation: 21

1

I just needed a way to do this, and tip for me here was vmrun. My simple command line solution (from the VMware directory):

for /f "tokens=* skip=1" %a in ('vmrun list') do vmrun suspend "%a"

If in a bat file:

for /f "tokens=* skip=1" %%a in ('vmrun list') do vmrun suspend "%%a"

Scott C

Posted 2010-03-12T21:01:38.103

Reputation: 177