VMware Workstation: приостановить работу всех виртуальных машин с помощью vmrun

Я знаю, что могу приостановить данную виртуальную машину VMware в командной строке с помощью:

vmrun suspend /path/to/virtual_machine_file.vmx

Есть ли способ приостановить все виртуальные машины одновременно, используя vmrun? Что-то вроде vmrun suspend all?

3 ответа

Решение

Ну, я надеялся на легкий ответ, но так как его не было, я написал свой собственный сценарий. Надеюсь это кому-нибудь пригодится! Это в рубине - когда запустить, он позвонит vmrun list чтобы получить список всех запущенных виртуальных машин, удалите первую строку ("Всего запущенных виртуальных машин: 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

Версия ответа для пакетного файла Windows (3-й пост): http://communities.vmware.com/thread/92951?tstart=0

Я не воспроизводил решение напрямую, потому что оно заимствовало код у оригинальных авторов в приведенной выше ссылке, и они заслуживают их доверия. Я просто взял то, что они сделали, и адаптировал его так, чтобы просто приостановить все работающие виртуальные машины (оригинальный сценарий приостанавливается, выполняет резервное копирование и возобновляет работу).

Мне просто нужен был способ сделать это, и совет для меня был 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"

Другие вопросы по тегам