ฉันรู้ว่าฉันสามารถระงับเครื่องเสมือน VMware ที่กำหนดบนบรรทัดคำสั่งด้วย:
vmrun suspend /path/to/virtual_machine_file.vmx
มีวิธีใดที่จะระงับเครื่องเสมือนทั้งหมดพร้อมกันvmrun
หรือไม่ สิ่งที่ชอบvmrun suspend all
?
ฉันรู้ว่าฉันสามารถระงับเครื่องเสมือน VMware ที่กำหนดบนบรรทัดคำสั่งด้วย:
vmrun suspend /path/to/virtual_machine_file.vmx
มีวิธีใดที่จะระงับเครื่องเสมือนทั้งหมดพร้อมกันvmrun
หรือไม่ สิ่งที่ชอบvmrun suspend all
?
คำตอบ:
ฉันหวังว่าจะได้คำตอบง่ายๆ แต่เนื่องจากไม่มีสักเล่มฉันจึงเขียนสคริปต์ของตัวเอง ฉันหวังว่านี่จะเป็นประโยชน์กับใครบางคน! มันอยู่ใน ruby - เมื่อเรียกใช้มันจะเรียกใช้vmrun list
เพื่อรับรายการของ VM ที่ใช้งานทั้งหมดตัดออกจากบรรทัดแรก ("VM ที่รันทั้งหมด: 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
ฉันไม่ได้ทำซ้ำการแก้ปัญหาโดยตรงเพราะมันยืมรหัสจากผู้เขียนต้นฉบับในลิงค์ด้านบนและพวกเขาสมควรได้รับเครดิตของพวกเขา ฉันเพิ่งทำสิ่งที่พวกเขาทำและปรับเปลี่ยนให้หยุดการใช้งาน VM ทั้งหมดชั่วคราว (สคริปต์ต้นฉบับหยุดทำงานชั่วคราวสำรองข้อมูลและดำเนินการต่อ)
ฉันต้องการวิธีการทำเช่นนี้และเคล็ดลับสำหรับฉันที่นี่คือ 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"