Управление виртуальными машинами Hyper-V с помощью PowerShell

Эта статья посвящена управлению виртуальными машинами 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

Модуль Hyper-V в Windows PowerShell Модуль Hyper-V в Windows PowerShell

В Windows Server 2022 в модуле Hyper-V доступно 245 команд.

Чтобы отобразить список настроек хоста Hyper-V, используйте следующую команду:

Get-VMHost|fl *

Чтобы отобразить только информацию о количестве доступных ядер процессора и оперативной памяти:

Get-VMHost| select LogicalProcessorCount, MemoryCapacity

узнать доступные процессор и память в hyper-vузнать доступный процессор и память в hyper-v

Используйте 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"}

Если ваш сервер поддерживает SR-IOV (однокорневая виртуализация ввода/вывода (I/O)), обратите внимание, что опцию следует включить при создании коммутатора. Включить SR-IOV для существующего vSwitch невозможно. Подробнее о том, как включить поддержку SR-IOV для виртуальных машин Hyper-V.

Создайте внешний виртуальный коммутатор:

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

New-VMSwitch - создание виртуального коммутатора Hyper-VNew-VMSwitch - создание виртуального коммутатора Hyper-V

Создание виртуальной машины 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

hyper-v create vm powershellhyper-v create vm powershell

Здесь приведен пример использования PowerShell для создания виртуальной машины Windows 11 на Hyper-V.

Давайте рассмотрим команды, которые можно использовать для изменения параметров виртуальной машины.

Чтобы увеличить объем оперативной памяти для ВМ:

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

hyper-v list vm powershellhyper-v list vm powershell

Команда возвращает список виртуальных машин с некоторыми основными свойствами. Чтобы отобразить все свойства ВМ, выполните следующую команду:

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

Узнайте, как остановить невосприимчивую виртуальную машину Hyper-V.

Смонтируйте ISO-файл на виртуальное устройство CD/DVD:

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

Можно использовать USB passthrough для перенаправления USB-устройства (носителя/диска) на виртуальную машину Hyper-V.

Чтобы переместить все файлы ВМ на другой диск «на лету», используйте следующую команду:

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

Управление контрольными точками в Hyper-V с помощью PowerShellУправление контрольными точками в Hyper-V с помощью PowerShell

Чтобы восстановить ВМ в предыдущее состояние из контрольной точки:

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

Для резервного копирования виртуальных машин Hyper-V можно использовать встроенную программу Windows Server Backup (WSB).

Чтобы получить IP-адреса гостевых ОС виртуальных машин:

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

Чтобы подключиться к консоли виртуальной машины:

vmconnect.exe localhost mun-app01

VMConnect.exe Подключение к виртуальной машине Hyper-V. VMConnect.exe Подключение к виртуальной машине Hyper-V.

Вы можете использовать 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *