การจัดการเครื่องเสมือน Hyper-V ด้วย PowerShell
บทความนี้เกี่ยวกับการจัดการเครื่องเสมือน Hyper-V จากคอนโซล PowerShell เราจะดูวิธีสร้างสวิตช์เสมือนและเครื่องเสมือน เปลี่ยนการตั้งค่า VM และจัดการ VM คุณสามารถใช้คำสั่งเหล่านี้เพื่อจัดการ Hyper-V VM ด้วยตนเองหรือในสคริปต์ 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 บนคอมพิวเตอร์ คุณสามารถแสดงรายการคำสั่งที่มีอยู่ทั้งหมด (ขึ้นอยู่กับเวอร์ชัน Windows ของคุณ) ดังนี้:
Get-Command -Module hyper-v
ใน Windows Server 2022 มี 245 cmdlet ในโมดูล 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 ของคุณ เครื่องเสมือนสามารถเข้าถึงเครือข่ายผ่านสวิตช์เสมือนเท่านั้น
มาแสดงรายการอะแดปเตอร์เครือข่ายที่มีอยู่จริงบนโฮสต์ Hyper-V:
Get-NetAdapter | where {$_.status -eq "up"}หากเซิร์ฟเวอร์ของคุณรองรับ SR-IOV (Single-Root Input/Output (I/O) Virtualization) โปรดทราบว่าคุณควรเปิดใช้ตัวเลือกนี้เมื่อสร้างสวิตช์ คุณไม่สามารถเปิดใช้งาน SR-IOV สำหรับ vSwitch ที่มีอยู่ เรียนรู้เพิ่มเติมเกี่ยวกับวิธีเปิดใช้งานการสนับสนุน SR-IOV สำหรับ Hyper-V VM
สร้างสวิตช์เสมือนภายนอก:
New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName Ethernet0 -SwitchType External
สร้างเครื่องเสมือน Hyper-V โดยใช้ PowerShell
ในการสร้างเครื่องเสมือน Hyper-V ใหม่
New-VMใช้ cmdlet ในตัวอย่างนี้ เราจะสร้าง VM เจนเนอเรชั่น 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ในการเปลี่ยนจำนวน vCPU:
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ในการเริ่มเครื่องเสมือนที่หยุดทำงานทั้งหมด:
Get-VM | where {$_.State -eq 'Off'} | Start-VMปิด VM (ปิดระบบอย่างถูกต้องโดยใช้ Integration Services ในระบบปฏิบัติการเกสต์):
Stop-VM -Name mun-app01หากต้องการปิด VM จะใช้ตัวเลือก ปิด:
Stop-VM -Name mun-app01 -TurnOffเรียนรู้วิธีหยุด Hyper-V VM ที่ไม่ตอบสนอง
เมานต์ไฟล์ ISO เข้ากับอุปกรณ์ CD/DVD เสมือน:
Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.isoคุณสามารถใช้ USB passthrough เพื่อเปลี่ยนเส้นทางอุปกรณ์ USB (สื่อ/ไดรฟ์) ไปยัง Hyper-V VM
หากต้องการย้ายไฟล์ VM ทั้งหมดไปยังดิสก์อื่นในทันที ให้ใช้คำสั่งด้านล่าง:
Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01คุณสามารถขยายหรือลดขนาดไฟล์ดิสก์เสมือนได้โดยใช้
Resize-VHDcmdlet:
Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50Gbวิธีสร้างจุดตรวจสอบ (สแน็ปช็อต) ของ 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ในการลบสแนปชอต:
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) ในตัวเพื่อสำรองข้อมูลเครื่องเสมือน 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






