บทความนี้เกี่ยวกับการจัดการเครื่องเสมือน Hyper-V จากคอนโซล PowerShell เราจะมาดูวิธีสร้างสวิตช์เสมือนและเครื่องเสมือน เปลี่ยนการตั้งค่า VM และจัดการ VMs คุณสามารถใช้คำสั่งเหล่านี้เพื่อจัดการ VM Hyper-V ของคุณด้วยตนเองหรือในสคริปต์ PowerShell ของคุณเพื่อทำให้งานต่างๆ เป็นอัตโนมัติ
วิธีเปิดใช้งานบทบาท Hyper-V บน Windows Server และ Windows 10/11
เพื่อติดตั้งบทบาท Hyper-V โฮสต์ต้องมี CPU ที่รองรับ SLAT พร้อมการสนับสนุนการเสมือนจริง บน Windows Server คำสั่ง PowerShell ต่อไปนี้ใช้สำหรับติดตั้งบทบาท Hyper-V:
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
ในรุ่นเดสก์ท็อป (Windows 10 และ 11) บทบาท Hyper-V ติดตั้งดังนี้:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All
เพื่อจัดการโฮสต์ Hyper-V โมดูล Hyper-V PowerShell module ต้องติดตั้งบนคอมพิวเตอร์ คุณสามารถแสดงรายการคำสั่งที่พร้อมใช้งานทั้งหมด (ขึ้นอยู่กับเวอร์ชัน Windows ของคุณ) ได้ดังนี้:
Get-Command -Module hyper-v
ใน Windows Server 2022 มี cmdlet 245 ตัวพร้อมใช้งานในโมดูล Hyper-V
เพื่อแสดงรายการการตั้งค่าโฮสต์ Hyper-V ให้ใช้คำสั่งด้านล่าง:
Get-VMHost|fl *
เพื่อแสดงเฉพาะข้อมูลเกี่ยวกับจำนวนแกน CPU ที่พร้อมใช้งานและ RAM:
Get-VMHost| select LogicalProcessorCount, MemoryCapacity
ใช้ Set-VMHost เพื่อเปลี่ยนการตั้งค่าโฮสต์ Hyper-V คำสั่งต่อไปนี้จะเปลี่ยนเส้นทางเริ่มต้นไปยังดิสก์เสมือนและไฟล์การกำหนดค่า VM:
Set-VMHost -VirtualMachinePath E:\VMs -VirtualHardDiskPath E:\VMs\VHD'
สร้าง Hyper-V Virtual Switch ด้วย PowerShell
ก่อนอื่น ให้สร้างสวิตช์เสมือนบนโฮสต์ Hyper-V ของคุณ เครื่องเสมือนสามารถเข้าถึงเครือข่ายได้เฉพาะผ่านสวิตช์เสมือน
มาแสดงรายการแอดAPTER เครือข่ายทางกายภาพที่พร้อมใช้งานบนโฮสต์ Hyper-V:
Get-NetAdapter | where {$_.status -eq "up"}
หากเซิร์ฟเวอร์ของคุณรองรับ SR-IOV (Single-Root Input/Output (I/O) Virtualization) โปรดทราบว่าคุณควรเปิดใช้งานตัวเลือกเมื่อสร้างสวิตช์ของคุณ คุณไม่สามารถเปิดใช้งาน SR-IOV สำหรับ vSwitch ที่มีอยู่แล้ว เรียนรู้เพิ่มเติมเกี่ยวกับวิธีเปิดใช้งานการสนับสนุน SR-IOV สำหรับ VM Hyper-V
สร้างสวิตช์เสมือนภายนอก (External):
New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName Ethernet0 -SwitchType External
สร้างเครื่องเสมือน Hyper-V โดยใช้ PowerShell
เพื่อสร้างเครื่องเสมือน Hyper-V ใหม่ ใช้คำสั่ง New-VM ในตัวอย่างนี้ เราจะสร้าง VM Generation 2 ใหม่พร้อม RAM 1GB และดิสก์ VHDX 10 GB
$VMName = "mun-prx2"
$VM = @{
Name = $VMName
MemoryStartupBytes = 1Gb
Generation = 2
NewVHDPath = "E:\HV\$VMName\$VMName.vhdx"
NewVHDSizeBytes = 10Gb
BootDevice = "VHD"
Path = "E:\HV\$VMName"
SwitchName = "ExternalVMSwitch"
}
New-VM @VM
นี่คือตัวอย่างการใช้ PowerShell เพื่อสร้างเครื่องเสมือน Windows 11 บน Hyper-V
มา看看คำสั่งที่คุณสามารถใช้เพื่อเปลี่ยนการตั้งค่า VM
เพื่อเพิ่มขนาด RAM สำหรับ VM:
Get-VM -Name mun-prx2| Set-VMMemory -StartupBytes 2Gb
เพื่อเปลี่ยนจำนวน vCPUs:
Set-VMProcessor mun-prx2 -Count 2
เปิดใช้งานการเริ่มต้นอัตโนมัติสำหรับเครื่องเสมือน Hyper-V:
Get-VM –VMname mun-prx2 | Set-VM –AutomaticStartAction Start
เพื่อเชื่อมต่อดิสก์เสมือนเพิ่มเติมกับ VM ให้สร้างไฟล์ vhdx ก่อน:
New-VHD -Path 'C:\VM\new-prx2-drive.vhdx' -SizeBytes 2GB
จากนั้นเชื่อมต่อกับ VM ของคุณ:
Add-VMHardDiskDrive -VMName mun-prx2 -Path 'C:\VM\new-prx2-drive.vhdx'
วิธีจัดการ Hyper-V VMs ด้วย PowerShell
เพื่อแสดงรายการเครื่องเสมือนบนโฮสต์ Hyper-V:
Get-VM
คำสั่งส่งคืนรายการ VM พร้อมคุณสมบัติพื้นฐานบางส่วน หากต้องการแสดงคุณสมบัติ VM ทั้งหมด ให้รันคำสั่งด้านล่าง:
Get-VM -Name mun-dmz1 | fl *
เพื่อแสดง VM ที่กำลังทำงานเท่านั้น:
Get-VM | where {$_.State -eq 'Running'}
เพื่อเริ่มต้นเครื่องเสมือน:
Start-VM -Name mun-app01
เพื่อเริ่มต้น VM ที่หยุดทำงานทั้งหมด:
Get-VM | where {$_.State -eq 'Off'} | Start-VM
ปิดเครื่อง VM (ปิดอย่างถูกต้องโดยใช้ Integration Services ในระบบปฏิบัติการผู้เยี่ยมชม):
Stop-VM -Name mun-app01
เพื่อปิดเครื่อง VM แบบบังคับ ใช้ตัวเลือก TurnOff:
Stop-VM -Name mun-app01 –TurnOff
เรียนรู้วิธีหยุด VM Hyper-V ที่ไม่ตอบสนอง
แม้ตไฟล์ ISO เข้าอุปกรณ์ CD/DVD เสมือน:
Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.iso
คุณสามารถใช้ USB passthrough เพื่อเปลี่ยนเส้นทางอุปกรณ์ USB (มีเดีย/ไดรฟ์) ไปยัง VM Hyper-V
เพื่อย้ายไฟล์ VM ทั้งหมดไปยังดิสก์อื่นบนระหว่างทำงาน (on the fly) ใช้คำสั่งด้านล่าง:
Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01
คุณสามารถขยายหรือหดไฟล์ดิสก์เสมือนโดยใช้คำสั่ง Resize-VHD:
Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50Gb
เพื่อสร้างเช็คพอยต์ (snapshot) ของ VM:
Get-VM -Name mun-app01| Checkpoint-VM -SnapshotName "Before upgrading SAP"
เพื่อแสดงรายการเช็คพอยต์ที่พร้อมใช้งาน:
Get-Vm -Name mun-app01| Get-VMCheckpoint
เพื่อกู้คืน VM ไปยังสถานะก่อนหน้าจากเช็คพอยต์:
Restore-VMCheckpoint -Name "Before upgrading SAP" -VMName mun-app01 -Confirm:$false
เพื่อลบ snapshot:
Remove-VMCheckpoint -VMName mun-app01 -Name "Before upgrading SAP"
การส่งออก นำเข้า และโคลน VM ใน Hyper-V อธิบายไว้ในบทความนี้:
Export-VM -Name mun-app01 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState
คุณสามารถใช้ Windows Server Backup (WSB) แบบbuiltin เพื่อสำรองข้อมูลเครื่องเสมือน Hyper-V
เพื่อรับที่อยู่ IP ของระบบปฏิบัติการผู้เยี่ยมชมของเครื่องเสมือน:
Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, Status
เพื่อเชื่อมต่อกับคอนโซลเครื่องเสมือน:
vmconnect.exe localhost mun-app01
คุณสามารถใช้ PowerShell Direct เพื่อเชื่อมต่อโดยตรงกับระบบปฏิบัติการผู้เยี่ยมชมของเครื่องเสมือนผ่าน vmbus (พร้อมใช้งานใน Windows Server 2016, Windows 10 และใหม่กว่า) ใช้ Invoke-Command (เพื่อรันสคริปต์) และ Enter-PSSession (เพื่อรันเซสชัน PowerShell แบบโต้ตอบ):
Invoke-Command -VMName mun-app01 -ScriptBlock {Get-Process}
Enter-PSSession -VMName mun-app01
เพื่อคัดลอกไฟล์จากโฮสต์ Hyper-V ไปยังเครื่องเสมือนโดยใช้ PowerShell Direct ใช้คำสั่งต่อไปนี้:
$PSSession = New-PSSession -VMName mun-app01 -Credential (Get-Credential)
Copy-Item -ToSession $PSSession -Path E:\ISO\install_image.iso -Destination D:\ISO\
คุณสามารถใช้ PowerShell เพื่อจัดการเครื่องเสมือนบนโฮสต์ Hyper-V ทั้งในพื้นที่และระยะไกล (บน Windows Server Full GUI หรือโหมด Server Core, บน Windows Hyper-V Server ฟรี หรือ Windows 10) ร่วมกับเครื่องมือกราฟิกเช่น Hyper-V Manager หรือ Windows Admin Center