ค้นหาเว็บไซต์

การจัดการเครื่องเสมือน 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-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

คุณสามารถใช้ 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

บทความที่เกี่ยวข้อง