PowerShell ile Hyper-V Sanal Makinelerini Yönetme


Bu makale, Hyper-V sanal makinelerini PowerShell konsolundan yönetme hakkındadır. Sanal anahtarların ve sanal makinelerin nasıl oluşturulacağına, VM ayarlarının nasıl değiştirileceğine ve VM'lerin nasıl yönetileceğine bakacağız. Bu komutları, Hyper-V VM'lerinizi manuel olarak yönetmek için veya çeşitli görevleri otomatikleştirmek için PowerShell betiklerinizde kullanabilirsiniz.

Windows Server ve Windows 10/11'de Hyper-V Rolünü Etkinleştirme

Hyper-V rolünü yüklemek için, bir ana bilgisayarın sanallaştırma destekli SLAT özellikli bir CPU'ya sahip olması gerekir. Windows Server'da, Hyper-V rolünü yüklemek için aşağıdaki PowerShell komutu kullanılır:

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

Masaüstü sürümlerinde (Windows 10 ve 11), Hyper-V rolü şu şekilde kurulur:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Bir Hyper-V ana bilgisayarını yönetmek için bilgisayarda Hyper-V PowerShell modülü kurulu olmalıdır. Kullanılabilir komutların tam listesini (Windows sürümünüze bağlıdır) aşağıdaki gibi görüntüleyebilirsiniz:

Get-Command -Module hyper-v

Windows Server 2022'de, Hyper-V modülünde 245 cmdlet kullanılabilir.

Hyper-V ana bilgisayar ayarlarının bir listesini görüntülemek için aşağıdaki komutu kullanın:

Get-VMHost|fl *

Yalnızca kullanılabilir CPU çekirdeği ve RAM sayısı hakkındaki bilgileri göstermek için:

Get-VMHost| select LogicalProcessorCount, MemoryCapacity

Kullan

Set-VMHost

Hyper-V ana bilgisayar ayarlarını değiştirmek için. Aşağıdaki komut, sanal disklere ve VM yapılandırma dosyalarına giden varsayılan yolları değiştirecektir:

Set-VMHost -VirtualMachinePath E:\VMs -VirtualHardDiskPath E:\VMs\VHD'

PowerShell ile Hyper-V Sanal Anahtarı Oluşturun

Her şeyden önce, Hyper-V sunucunuzda bir sanal anahtar oluşturun. Sanal makineler ağa yalnızca bir sanal anahtar aracılığıyla erişebilir.

Hyper-V ana bilgisayarında kullanılabilir fiziksel ağ bağdaştırıcılarının bir listesini görüntüleyelim:

Get-NetAdapter | where {$_.status -eq "up"}

Sunucunuz SR-IOV (Tek Köklü Giriş/Çıkış (I/O) Sanallaştırma)'yı destekliyorsa, anahtarınızı oluştururken seçeneği etkinleştirmeniz gerektiğini unutmayın. Mevcut bir vSwitch için SR-IOV'yi etkinleştiremezsiniz. Hyper-V sanal makineleri için SR-IOV desteğinin nasıl etkinleştirileceği hakkında daha fazla bilgi edinin.

Harici bir sanal anahtar oluşturun:

New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName Ethernet0 -SwitchType External

PowerShell Kullanarak Hyper-V Sanal Makinesi Oluşturma

Yeni bir Hyper-V sanal makinesi oluşturmak için,

New-VM

cmdlet'i kullanılır. Bu örnekte, 1 GB RAM ve 10 GB VHDX disk ile yeni bir Generation 2 VM oluşturacağız.

$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

Burada, Hyper-V üzerinde bir Windows 11 sanal makinesi oluşturmak için PowerShell kullanımına bir örnek verilmiştir.

VM ayarlarını değiştirmek için kullanabileceğiniz komutlara bir göz atalım.

Bir VM için RAM boyutunu artırmak için:

Get-VM -Name mun-prx2| Set-VMMemory -StartupBytes 2Gb

vCPU sayısını değiştirmek için:

Set-VMProcessor mun-prx2 -Count 2

Hyper-V sanal makinesi için otomatik başlatmayı etkinleştirin:

Get-VM -VMname mun-prx2 | Set-VM -AutomaticStartAction Start

VM'ye ek bir sanal disk bağlamak için önce vhdx dosyasını oluşturun:

New-VHD -Path 'C:\VM\new-prx2-drive.vhdx' -SizeBytes 2GB

Ardından sanal makinenize bağlayın:

Add-VMHardDiskDrive -VMName mun-prx2 -Path 'C:\VM\new-prx2-drive.vhdx'

PowerShell ile Hyper-V Sanal Makineleri Nasıl Yönetilir?

Bir Hyper-V ana bilgisayarında sanal makinelerin listesini görüntülemek için:

Get-VM

Komut, bazı temel özelliklere sahip VM'lerin listesini döndürür. Tüm VM özelliklerini görüntülemek için aşağıdaki komutu çalıştırın:

Get-VM -Name mun-dmz1 | fl *

Yalnızca çalışan VM'leri göstermek için:

Get-VM | where {$_.State -eq 'Running'}

Bir sanal makine başlatmak için:

Start-VM -Name mun-app01

Durdurulan tüm sanal makineleri başlatmak için:

Get-VM | where {$_.State -eq 'Off'} | Start-VM

VM'yi kapatın (konuk işletim sisteminde Entegrasyon Hizmetlerini kullanarak doğru kapatma):

Stop-VM -Name mun-app01

VM'yi kapatmak için Kapat seçeneği kullanılır:

Stop-VM -Name mun-app01 -TurnOff

Yanıt vermeyen bir Hyper-V VM'yi nasıl durduracağınızı öğrenin.

ISO dosyasını sanal bir CD/DVD aygıtına bağlayın:

Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.iso

USB aygıtını (ortam/sürücü) bir Hyper-V VM'ye yönlendirmek için USB geçidini kullanabilirsiniz.

Tüm VM dosyalarını anında başka bir diske taşımak için aşağıdaki komutu kullanın:

Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01

Kullanarak bir sanal disk dosyasını genişletebilir veya küçültebilirsiniz.

Resize-VHD

cmdlet'i:

Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50Gb

Bir VM'nin kontrol noktasını (anlık görüntüsünü) oluşturmak için:

Get-VM -Name mun-app01| Checkpoint-VM -SnapshotName "Before upgrading SAP"

Mevcut kontrol noktalarının bir listesini görüntülemek için:

Get-Vm -Name mun-app01| Get-VMCheckpoint

Bir VM'yi bir kontrol noktasından önceki durumuna geri yüklemek için:

Restore-VMCheckpoint -Name "Before upgrading SAP" -VMName mun-app01 -Confirm:$false

Bir anlık görüntüyü kaldırmak için:

Remove-VMCheckpoint -VMName mun-app01 -Name "Before upgrading SAP"

Hyper-V'de bir VM'yi dışa aktarma, içe aktarma ve klonlama bu makalede açıklanmaktadır:

Export-VM -Name mun-app01 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState

Hyper-V sanal makinelerini yedeklemek için yerleşik Windows Sunucu Yedeklemesini (WSB) kullanabilirsiniz.

Sanal makinelerin konuk işletim sisteminin IP adreslerini almak için:

Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, Status

Bir sanal makine konsoluna bağlanmak için:

vmconnect.exe localhost mun-app01

Vmbus aracılığıyla doğrudan sanal makinelerin konuk işletim sistemlerine bağlanmak için PowerShell Direct'i kullanabilirsiniz (Windows Server 2016, Windows 10 ve daha yeni sürümlerde mevcuttur). Invoke-Command (komut dosyalarını çalıştırmak için) ve Enter-PSSession'ı (etkileşimli bir PowerShell oturumu çalıştırmak için) kullanın:

Invoke-Command -VMName mun-app01 -ScriptBlock {Get-Process}
Enter-PSSession -VMName mun-app01

Dosyaları bir Hyper-V ana bilgisayarından PowerShell Direct kullanarak bir sanal makineye kopyalamak için aşağıdaki komutu kullanın:

$PSSession = New-PSSession -VMName mun-app01 -Credential (Get-Credential)
Copy-Item -ToSession $PSSession -Path E:\ISO\install_image.iso -Destination D:\ISO\

Hyper-V Yönetici konsolu gibi grafik araçlarla birlikte Hyper-V ana bilgisayarlarındaki sanal makineleri yerel olarak veya uzaktan (Windows Server Tam GUI veya Sunucu Çekirdeği modlarında, ücretsiz Windows Hyper-V Sunucusunda veya Windows 10'da) yönetmek için PowerShell'i kullanabilirsiniz. veya Windows Yönetici Merkezi.

İlgili makaleler