
Эта статья посвящена управлению виртуальными машинами Hyper-V с помощью консоли PowerShell. Мы рассмотрим, как создавать виртуальные коммутаторы и виртуальные машины, изменять параметры ВМ и управлять ВМ. Эти команды можно использовать для ручного управления виртуальными машинами Hyper-V или в сценариях PowerShell для автоматизации различных задач.
Как включить роль Hyper-V на Windows Server и Windows 10/11
Чтобы установить роль Hyper-V, хост должен иметь процессор с поддержкой SLAT и поддержкой виртуализации. На Windows Server для установки роли Hyper-V используется следующая команда PowerShell:
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 в модуле Hyper-V доступно 245 команд.
Чтобы отобразить список настроек хоста Hyper-V, используйте следующую команду:
Get-VMHost|fl *
Чтобы отобразить только информацию о количестве доступных ядер процессора и оперативной памяти:
Get-VMHost| select LogicalProcessorCount, MemoryCapacity
Используйте Set-VMHost
для изменения настроек хоста Hyper-V. Следующая команда изменит пути по умолчанию к виртуальным дискам и файлам конфигурации ВМ:
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
используется команда. В этом примере мы создадим новую виртуальную машину поколения 2 с 1 ГБ оперативной памяти и диском VHDX объемом 10 ГБ.
$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
Давайте рассмотрим команды, которые можно использовать для изменения параметров виртуальной машины.
Чтобы увеличить объем оперативной памяти для ВМ:
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
Чтобы подключить к виртуальной машине дополнительный виртуальный диск, сначала создайте файл vhdx:
New-VHD -Path 'C:\VM\new-prx2-drive.vhdx' -SizeBytes 2GB
А затем подключите его к ВМ:
Add-VMHardDiskDrive -VMName mun-prx2 -Path 'C:\VM\new-prx2-drive.vhdx'
Как управлять виртуальными машинами Hyper-V с помощью PowerShell?
Чтобы отобразить список виртуальных машин на хосте Hyper-V, выполните следующие действия:
Get-VM
Команда возвращает список виртуальных машин с некоторыми основными свойствами. Чтобы отобразить все свойства ВМ, выполните следующую команду:
Get-VM -Name mun-dmz1 | fl *
Чтобы показать только работающие ВМ:
Get-VM | where {$_.State -eq 'Running'}
Чтобы запустить виртуальную машину:
Start-VM -Name mun-app01
Чтобы запустить все остановленные виртуальные машины:
Get-VM | where {$_.State -eq 'Off'} | Start-VM
Выключите виртуальную машину (корректное выключение с помощью Integration Services в гостевой ОС):
Stop-VM -Name mun-app01
Чтобы выключить ВМ, необходимо выполнить команду TurnOff используется опция:
Stop-VM -Name mun-app01 –TurnOff
Смонтируйте ISO-файл на виртуальное устройство CD/DVD:
Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.iso
Чтобы переместить все файлы ВМ на другой диск «на лету», используйте следующую команду:
Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01
Расширить или уменьшить файл виртуального диска можно с помощью команды Resize-VHD
команды:
Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50Gb
Чтобы создать контрольную точку (снимок) виртуальной машины:
Get-VM -Name mun-app01| Checkpoint-VM -SnapshotName "Before upgrading SAP"
Чтобы отобразить список доступных контрольных точек:
Get-Vm -Name mun-app01| Get-VMCheckpoint
Чтобы восстановить ВМ в предыдущее состояние из контрольной точки:
Restore-VMCheckpoint -Name "Before upgrading SAP" -VMName mun-app01 -Confirm:$false
Чтобы удалить снимок:
Remove-VMCheckpoint -VMName mun-app01 -Name "Before upgrading SAP"
Экспорт, импорт и клонирование ВМ в Hyper-V описаны в этой статье:
Export-VM -Name mun-app01 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState
Чтобы получить 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.