โมดูล Hyper-V PowerShell : ทำสิ่งต่าง ๆ ได้มากขึ้น
หากคุณใช้แพลตฟอร์มการจำลองเสมือน Hyper-V ของ Microsoft เพื่อเรียกใช้เครื่องเสมือน คุณอาจคุ้นเคยกับการใช้ Hyper-V Manager แต่คุณรู้หรือไม่ว่าคุณสามารถทำงานได้มากขึ้นโดยใช้เวลาน้อยลงด้วยโมดูล Hyper-V PowerShell
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีจัดการ Hyper-V VM ด้วย PowerShell รวมถึงการสร้าง การลบ และคุณยังจะได้เข้าสู่สแน็ปช็อต VM ด้วย!
ข้อกำหนดเบื้องต้น
สำหรับบทช่วยสอนนี้ คุณจะต้องมีสิ่งต่อไปนี้ตามรายการด้านล่าง:
- ไคลเอนต์ Windows เพื่อเชื่อมต่อกับโฮสต์ Hyper-V ระยะไกล บทช่วยสอนนี้ใช้ Windows 10 Pro
- โฮสต์ Hyper-V ที่เปิดใช้งาน PowerShell Remoting โฮสต์ Hyper-V ของบทช่วยสอนมีชื่อว่า HYPER และอยู่ในกลุ่มงาน แต่ไคลเอนต์และโฮสต์ที่เข้าร่วม Active-Directory ก็ใช้งานได้เช่นกัน
- บัญชีผู้ใช้บนโฮสต์ Hyper-V ในกลุ่มผู้ดูแลระบบภายในหรือในกลุ่มผู้ดูแลระบบ Hyper-V บทช่วยสอนนี้จะใช้บัญชีชื่อ localadmin
การเชื่อมต่อกับโฮสต์ Hyper-V ระยะไกล
หากต้องการทำงานกับ Hyper-V บน PowerShell คุณจะต้องสามารถสื่อสารกับโฮสต์ Hyper-V ได้ คุณสามารถทำได้ภายในเครื่องโดยเรียกใช้ Hyper-V PowerShell cmdlets โดยระบุชื่อของโฮสต์ Hyper-V หรือคุณสามารถใช้ PowerShell Remoting เพื่อเชื่อมต่อกับโฮสต์ Hyper-V เองได้
ในบทช่วยสอนนี้ คุณจะทำการเชื่อมต่อกับโฮสต์ Hyper-V อย่างต่อเนื่อง และรันคำสั่งบนโฮสต์ Hyper-V เอง
1. เปิด PowerShell บนเครื่องคอมพิวเตอร์ของคุณ
2. เรียกใช้ Enter-PSSession cmdlet โดยระบุชื่อโฮสต์ของโฮสต์ Hyper-V ระยะไกลของคุณสำหรับพารามิเตอร์ ComputerName การดำเนินการนี้จะสร้างเซสชันแบบโต้ตอบและอนุญาตให้คุณเรียกใช้คำสั่งแบบโต้ตอบบนโฮสต์ Hyper-V ระยะไกล
Enter-PSSession -ComputerName HYPER -Credential (Get-Credential)หากไคลเอ็นต์และโฮสต์ Hyper-V ของคุณเป็นสมาชิกของโดเมน Active Directory เดียวกัน คุณไม่จำเป็นต้องใช้พารามิเตอร์
ข้อมูลรับรอง
3. จากนั้นคุณจะได้รับแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่านเพื่อเชื่อมต่อกับโฮสต์ Hyper-V ชื่อผู้ใช้และรหัสผ่านนี้จะเป็นผู้ใช้ที่เป็นผู้ดูแลระบบภายในเครื่องบนโฮสต์ระยะไกล เมื่อเชื่อมต่อแล้ว คุณควรเห็นพรอมต์ PowerShell ของคุณเปลี่ยนไปเพื่อแสดงชื่อโฮสต์ของโฮสต์ Hyper-V
ตอนนี้คุณพร้อมที่จะเริ่มรันคำสั่งแล้ว!
การสร้าง Hyper-V VM ด้วย PowerShell
สมมติว่าตอนนี้คุณเชื่อมต่อกับโฮสต์ Hyper-V โดยใช้ PowerShell Remoting มาเริ่มรันคำสั่งโดยสร้าง Hyper-V VM กันดีกว่า
การสร้าง VM อย่างง่าย
ขณะที่อยู่ในเซสชัน PSRemoting ของคุณเชื่อมต่อกับโฮสต์ Hyper-V ระยะไกล:
เรียกใช้ cmdlet New-VM เพื่อสร้าง VM ใหม่ เมื่อสร้าง VM ด้วย New-VM cmdlet คุณจะมีตัวเลือกต่างๆ มากมายให้เลือกเกี่ยวกับวิธีการสร้าง
1. ในตัวอย่างนี้ด้านล่าง บทช่วยสอนกำลังสร้าง VM ด้วย:
- ชื่อของ MyVM (
HYPER) - RAM 512MB (
MemoryStartupBytes)
New-VM -Name "HYPER" -MemoryStartupBytes 512MBการสร้าง VM ตามคุณสมบัติ VM อื่น ๆ
บางครั้งคุณจำเป็นต้องสร้าง VM ที่มีคุณลักษณะคล้ายกับ VM อื่น คุณสามารถทำได้แต่กำหนดแอตทริบิวต์ VM ต่างๆ ให้กับตัวแปร จากนั้นใช้ตัวแปรเหล่านั้นเมื่อสร้าง VM ใหม่ ตัวอย่างเช่น:
1. เรียกใช้ Get-VM เพื่อค้นหาแอตทริบิวต์ของ VM ที่มีอยู่โดยกำหนดเอาต์พุตให้กับตัวแปรดังที่แสดงด้านล่าง
$VMold = Get-VM "HYPER_old"2. เรียกใช้ Get-VMMemory cmdlet โดยระบุชื่อของ VM เพื่อรวบรวมแอตทริบิวต์จาก (ในกรณีนี้คือหน่วยความจำ) และกำหนดค่าหน่วยความจำให้กับตัวแปร
$memory = (Get-VMMemory -VMName $VMold.name).Startup3. ถัดไป สร้าง VM ใหม่ด้วย New-VM cmdlet ที่ให้ ชื่อ การสร้าง VM (Generation) โดยใช้ Generation คุณสมบัติ จาก VM อื่น และจำนวนหน่วยความจำจากค่าที่ได้รับจาก VM อื่น
New-VM -Name "newVM" -Generation $VMold.Generation -MemoryStartupBytes $memoryการแสดงรายการ VM ที่มีอยู่ด้วย PowerShell
ตอนนี้คุณมี VM อย่างน้อยสองตัวที่สร้างบนโฮสต์ Hyper-V เรามาสำรวจวิธีระบุ VM ที่สร้างขึ้นกันดีกว่า โดยทำดังนี้:
1. เรียกใช้ cmdlet Get-VM ด้วยตัวเอง เมื่อคุณทำงานโดยไม่มีพารามิเตอร์ Get-VM จะสอบถามโฮสต์ Hyper-V สำหรับ VM ที่มีอยู่ทั้งหมด <รหัส>รับ-VM
Get-VM2. บางทีคุณอาจต้องการค้นหาเพียง VM เดียวเท่านั้น ในกรณีนั้น ให้ใช้พารามิเตอร์ -Name คำสั่งโค้ดด้านล่างกำลังสอบถาม Hyper-V สำหรับ VM ที่สร้างขึ้นก่อนหน้านี้ชื่อ HYPER_old <รหัส>รับ VM - ชื่อ HYPER_old
Get-VM -Name HYPER_old
ถัดไป คุณอาจจำเป็นต้องค้นหา VM ทั้งหมดที่อยู่ใน State ที่เฉพาะเจาะจง ไม่มีปัญหา. ในการทำเช่นนั้น ให้เรียกใช้ Get-VM ซึ่งจะสอบถาม VM ทั้งหมด แต่ไปป์เอาต์พุตไปที่ Where-Object cmdlet
ในตัวอย่างด้านล่าง Pipe '|' จะจำกัดเอาต์พุตของ Get-VM ไว้เฉพาะออบเจ็กต์ VM ที่มี State เป็น Running <รหัส>รับ-VM -VMName HYPER_old | โดยที่วัตถุ {$_.State -eq 'กำลังทำงาน'}
Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}การเริ่มต้นและการหยุด VM
ในขณะนี้ VM ที่สร้างไว้ก่อนหน้านี้อาจหยุดทำงานแล้ว มาเปลี่ยนสิ่งนั้นด้วยการเริ่มต้นแล้วเรียนรู้วิธีหยุด VM ด้วย
ในเซสชัน PowerShell ของโฮสต์ Hyper-V ระยะไกล:
1. เรียกใช้ Start-VM cmdlet โดยระบุชื่อ (Name) ของ VM ที่สร้างไว้ก่อนหน้านี้ด้วยพารามิเตอร์ -Name
Start-VM -Name NewVMขณะนี้ VM เริ่มต้นแล้ว ให้หยุดโดยใช้ Stop-VM cmdlet ที่ระบุชื่อของ VM พร้อมด้วยพารามิเตอร์ Name
Stop-VM -Name HYPER_oldทันทีที่คุณรันคำสั่งด้านบน คุณจะเห็นการปิด VM ดังที่เห็นในภาพหน้าจอด้านล่าง
การปรับเปลี่ยน Hyper-V VM
VM จะไม่เหมือนเดิมเสมอไป บางทีคุณอาจต้องเพิ่มทรัพยากร CPU หรือ VM มีหน่วยความจำไม่เพียงพออย่างต่อเนื่อง ในกรณีนั้น Set-VM cmdlet จะเป็นเพื่อนของคุณ
เป็นตัวอย่างการแก้ไข VM ที่มีอยู่ในเซสชัน PowerShell ของโฮสต์ Hyper-V ระยะไกล:
เรียกใช้ cmdlet Set-VM เพื่อปิด HYPER_old VM ที่กำลังทำงานอยู่โดยอัตโนมัติ ใช้พารามิเตอร์ Name เพื่อระบุ VM ที่คุณต้องการตั้งค่าและระบุ Shutdown เป็นค่าสำหรับพารามิเตอร์ AutomaticStopAction เพื่อให้แน่ใจว่า VM จะถูกปิดโดยอัตโนมัติ ลงอย่างถูกต้องเมื่อโฮสต์ Hyper-V ถูกปิด
Set-VM -Name HYPER_old -AutomaticStopAction Shutdownบันทึก Hyper-V VM
ในเซสชัน PowerShell ของโฮสต์ Hyper-V ระยะไกล คุณอาจต้องบันทึก VM ที่คุณสร้างเพื่อรักษาสถานะของหน่วยความจำของ VM เพื่อใช้ในภายหลัง ในการดำเนินการนี้ ให้ใช้ Save-VM cmdlet พร้อมด้วยพารามิเตอร์ Name ที่ระบุชื่อของ VM ที่คุณต้องการบันทึก
โปรดทราบว่า VM ที่คุณต้องการบันทึกจะต้องอยู่ในสถานะกำลังทำงาน
Save-VM -Name HYPER_oldการจัดการจุดตรวจสอบ Hyper-V VM
หากคุณต้องการบันทึกสถานะที่มีอยู่ของ VM ก่อนที่จะทำการเปลี่ยนแปลงหรือคืนค่าการเปลี่ยนแปลง VM คุณควรเรียนรู้เกี่ยวกับจุดตรวจสอบ จุดตรวจสอบเป็นวิธีที่สะดวกในการบันทึกสถานะดิสก์และหน่วยความจำของ Hyper-V VM อย่างรวดเร็ว
ขณะอยู่บนโฮสต์ Hyper-V ของคุณ ให้เรียกใช้ Checkpoint-VM cmdlet โดยระบุชื่อของ VM ที่จะบันทึกและชื่อสำหรับจุดตรวจสอบ
ชื่อพารามิเตอร์
SnapshotNameยังคงอ้างอิงคำศัพท์เก่าที่ใช้ใน Hyper-V 2012 สแน็ปช็อตเป็นสิ่งเดียวกับจุดตรวจสอบ
Checkpoint-VM -Name HYPER_old -SnapshotName MyVMSnapshotเมื่อคุณสร้างจุดตรวจสอบแล้ว คุณสามารถใช้ Get-VMSnapshot cmdlet เพื่อดึงข้อมูลสแน็ปช็อตทั้งหมดที่จัดเก็บไว้ในโฮสต์ Hyper-V คุณสามารถดูด้านล่าง VM HYPER_old มีจุดตรวจสอบสามจุด
Get-VMSnapshot -VMName HYPER_oldบทสรุป
หากคุณได้ผ่านการสาธิตทั้งหมดในบทช่วยสอนนี้แล้ว คุณก็พร้อมที่จะจัดการ Hyper-V VM ด้วย PowerShell ตอนนี้คุณควรมีความรู้ที่จำเป็นในการจัดการ 1, 10 หรือแม้แต่ 100 VM!
คุณคิดว่างานประเภทใดที่ตอนนี้คุณสามารถทำงานอัตโนมัติด้วย PowerShell และ Hyper-V ได้









