สวัสดีครับ บทความนี้ผมรวบรวมมีคำสั่งหรือ cmdlet ของ PowerShell สำหรับใช้จัดการคอมพิวเตอร์เสมือน (Virtual Machine) บน Hyper-V ที่จะช่วยให้คุณจัดการระบบ Hyper-V ได้สะดวกรวดเร็วและง่ายขึ้น คำสั่งเหล่านี้สามารถใช้งานได้ทั้งบน Windows Server ที่ติดตั้งแบบ Server with a GUI หรือ Server Core ครับ
ระบบที่ใช้อ้างอิง
เซิร์ฟเวอร์ Hyper-V ที่ผมใช้อ้างอิงในบทความนี้เป็น Windows Server 2012 R2 ส่วน PowerShell เป็นเวอร์ชัน 4.0
การจัดการคอมพิวเตอร์เสมือนบน Hyper-V ขั้นพื้นฐานด้วย PowerShell มีรายละเอียดดังต่อไปนี้
1. การสร้างคอมพิวเตอร์เสมือนใหม่
การสร้างคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ New-VM สำหรับรายละเอียดสามารถอ่านได้จากเรื่อง การสร้าง Virtual Machine บน Hyper-V ด้วย PowerShell ที่ผมได้โพสต์ไปก่อนหน้านี้ครับ
2. การลบคอมพิวเตอร์เสมือน
การลบคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Remove-VM ในรูปแบบดังนี้
Remove-VM “Test VM”
รูปที่ 1
3. การเปิดคอมพิวเตอร์เสมือน
การเปิดคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Start-VM ในรูปแบบดังนี้
Start-VM –Name “Test VM”
รูปที่ 2
4. การปิดคอมพิวเตอร์เสมือน
การปิดคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Stop-VM ในรูปแบบดังนี้
Stop-VM –Name “Test VM”
รูปที่ 3
5. การหยุดทำงานคอมพิวเตอร์เสมือนชั่วคราว
การหยุดทำงานคอมพิวเตอร์เสมือนชั่วคราวด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Suspend-VM ในรูปแบบดังนี้
Suspend-VM –Name “Test VM”
รูปที่ 4
6. การเริ่มคอมพิวเตอร์เสมือนหลังจากหยุดทำงานชั่วคราว
การเริ่มคอมพิวเตอร์เสมือนหลังจากหยุดทำงานชั่วคราวด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Resume-VM ในรูปแบบดังนี้
Resume-VM –Name “Test VM”
รูปที่ 5
7. การบันทึกสถานะคอมพิวเตอร์เสมือน
การบันทึกสถานะ (Saved) คอมพิวเตอร์เสมือนที่เปิดอยู่ (เทียบเท่าการ hibernates บนเครื่องคอมพิวเตอร์จริง) ด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Save-VM ในรูปแบบดังนี้
Save-VM –Name “Test VM”
รูปที่ 6
การเปิดคอมพิวเตอร์เสมือนที่ถูกบันทึกสถานะนั้นจะใช้ cmdlet ชื่อ Start-VM ตามวิธีในข้อ “3. การเปิดคอมพิวเตอร์เสมือน” ครับ
8. การเปลี่ยนชื่อคอมพิวเตอร์เสมือน
การเปลี่ยนชื่อคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Rename-VM ในรูปแบบดังนี้
Rename-VM “Test VM” –NewName “Test Server”
9. การส่งออกคอมพิวเตอร์เสมือน
การส่งออกคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Export-VM ในรูปแบบดังนี้
Export-VM –Name “Test VM” –Path D:\VMExport
รูปที่ 7
หลังจากส่งออกคอมพิวเตอร์เสมือนเสร็จแล้ว สามารถตวรจสอบการทำงานได้โดยการใช้คำสั่ง Get-ChildItem -Name -Path D:\VMExport -Recurse
10. การนำเข้าคอมพิวเตอร์เสมือน
การนำเข้าคอมพิวเตอร์เสมือนนั้นคุณต้องทราบชื่อไฟล์ configuration (ไฟล์ .XML) ที่ได้จากการส่งออกคอมพิวเตอร์เสมือน (ดูวิธีทำในข้อ 8.) ซึ่งปกติแล้วไฟล์ดังกล่าวนี้จะเก็บอยู่ในโฟลเดอร์ [Drive:]\[Folder]\[VM Name]\Virtual Machines เช่น D:\VMExport\Test VM\Virtual Machines เป็นต้น สำหรับ cmdlet ของ PowerShell สำหรับนำเข้าคอมพิวเตอร์เสมือนคือ Import-VM โดยมีรูปแบบการใช้งานดังนี้
นำเข้าคอมพิวเตอร์เสมือนแบบ in-place:
Import-VM –Path ‘D:\VMImport\1409AF30-1FB4-4A76-A07C-734052DF8FA5.XML’
นำเข้าคอมพิวเตอร์เสมือนโดยคัดลอกไฟล์ไปยังโฟลเดอร์เริ่มต้น (default) ที่ใช้เก็บคอมพิวเตอร์เสมือนและฮาร์ดดิสก์เสมือนบนโฮสต์ Hyper-V และสร้างไอดีใหม่:
Import-VM –Path ‘D:\VMImport\1409AF30-1FB4-4A76-A07C-734052DF8FA5.XML’ -Copy -GenerateNewId
11. สร้าง Checkpoint คอมพิวเตอร์เสมือน
การสร้างเช็คพ้อยท์หรือสแนปช็อต (Snapshot) คอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Checkpoint-VM ในรูปแบบดังนี้
Checkpoint-VM -Name “Test VM” -SnapshotName “Base VM”
รูปที่ 8
หมายเหตุ: บน Windows Server 2012 R2 หรือใหม่กว่าเรียก Checkpoint บน Windows Server 2012 หรือเก่ากว่าเรียกอสแนปช็อต (Snapshot)
12. แสดงรายชื่อ Checkpoint ของคอมพิวเตอร์เสมือน
การแสดงรายชื่อเช็คพ้อยท์หรือสแนปช็อตของคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Get-VMSnapshot ในรูปแบบดังนี้
Get-VMSnapshot –VMName “Test VM”
13. ย้อนสถานะคอมพิวเตอร์เสมือนกลับไปยัง Checkpoint
การย้อนสถานะคอมพิวเตอร์เสมือนกลับไปยังเช็คพ้อยท์ที่ต้องการด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Restore-VMSnapshot ในรูปแบบดังนี้
Restore-VMSnapshot –Name “Base VM” –VMName “Test VM”
14. เปลี่ยนชื่อ Checkpoint ของคอมพิวเตอร์เสมือน
การเปลี่ยนชื่อเช็คพ้อยท์ของคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Rename-VMSnapshot ในรูปแบบดังนี้
Rename-VMSnapshot –VMName “Test VM” –Name “Windows 10” –NewName “Windows 10 Preview”
15. ส่งออก Checkpoint ของคอมพิวเตอร์เสมือน
การส่งออกเช็คพ้อยท์ของคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Export-VMSnapshot ในรูปแบบดังนี้
Export-VMSnapshot –Name “Windows 10 Preview” –VMName “Test VM” –Path “D:\VMExport\Checkpoint”
16. ลบ Checkpoint ของคอมพิวเตอร์เสมือน
การลบเช็คพ้อยท์ของคอมพิวเตอร์เสมือนด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Remove-VMSnapshot ในรูปแบบดังนี้
Remove-VMSnapshot –Name “Windows 10 Preview” –VMName “Test VM”
17. การแสดงรายชื่อคอมพิวเตอร์เสมือน
การแสดงรายชื่อคอมพิวเตอร์เสมือนที่อยู่บนระบบ Hyper-V ทั้งหมดด้วย PowerShell ทำได้โดยการใช้ cmdlet ชื่อ Get-VM ในรูปแบบดังนี้
Get-VM
รูปที่ 9
ถ้าต้องการแสดงรายชื่อคอมพิวเตอร์เสมือนทั้งหมดที่กำลังทำงานอยู่จะใช้คำสั่งดังต่อไปนี้
Get-VM | Where { $_.State –eq ‘Running’ }
รูปที่ 10
ถ้าต้องการแสดงรายชื่อคอมพิวเตอร์เสมือนทั้งหมดที่ปิดอยู่จะใช้คำสั่งดังต่อไปนี้
Get-VM | Where { $_.State –eq ‘Off’ }
รูปที่ 11
เหล่านี้คือคำสั่ง PowerShell (บางส่วน) สำหรับการจัดการคอมพิวเตอร์เสมือนบน Hyper-V ขั้นพื้นฐานที่นำมาฝากในบทความนี้ครับ นอกจากคำสั่งที่กล่าวมาด้านบนแล้วยังมี cmdlet ที่เกี่ยวข้องกับ Hyper-V อีกหลายตัว คุณสามารถดูทั้งหมดโดยการใช้ cmdlet ชื่อ Get-Command ในรูปแบบดังนี้
Get-Command -Module Hyper-V
ทิป: ดูวิธีการใช้งาน cmdlet ได้โดยใช้คำสั่ง Get-Help
ข้อมูลอ้างอิง
https://technet.microsoft.com/en-us/library/hh848479.aspx
http://blogs.technet.com/b/heyscriptingguy/archive/2013/05/10/get-a-list-of-virtual-machines-by-using-powershell.aspx
http://www.tomsitpro.com/articles/hyper-v-powershell-cmdlets,2-779.html
http://windowsitpro.com/hyper-v/simple-hyper-v-virtual-machine-management-using-powershell
http://windowsitpro.com/hyper-v/manage-hyperv-powershell






