บทความนี้เกี่ยวกับการจัดการเครื่องเสมือน 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 ด้วย PowerShell
ก่อนอื่น สร้างสวิตช์เสมือนบนโฮสต์ Hyper-V ของคุณ เครื่องเสมือนสามารถเข้าถึงเครือข่ายผ่านสวิตช์เสมือนเท่านั้น
มาแสดงรายการอะแดปเตอร์เครือข่ายที่มีอยู่จริงบนโฮสต์ Hyper-V:
Get-NetAdapter | where {$_.status -eq "up"}
สร้างสวิตช์เสมือนภายนอก:
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 VM ด้วย 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 ใน guest OS):
Stop-VM -Name mun-app01
หากต้องการปิด VM ปิด ใช้ตัวเลือก:
Stop-VM -Name mun-app01 –TurnOff
เมานต์ไฟล์ ISO กับอุปกรณ์ซีดี/ดีวีดีเสมือน:
Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.iso
หากต้องการย้ายไฟล์ VM ทั้งหมดไปยังดิสก์อื่นในทันที ให้ใช้คำสั่งด้านล่าง:
Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01
คุณสามารถขยายหรือย่อขนาดไฟล์ดิสก์เสมือนได้โดยใช้ Resize-VHD
cmdlet:
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
วิธีรับที่อยู่ IP ของ guest OS ของเครื่องเสมือน:
Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, Status
ในการเชื่อมต่อกับคอนโซลเครื่องเสมือน:
vmconnect.exe localhost mun-app01
คุณสามารถใช้ PowerShell Direct เพื่อเชื่อมต่อโดยตรงกับแขก OS ของเครื่องเสมือนผ่าน vmbus (มีให้ใน Windows Server 2016, Windows 10 และใหม่กว่า) ใช้คำสั่ง Invoke (เพื่อเรียกใช้สคริปต์) และ 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