Если вы используете виртуализационную платформу Microsoft Hyper-V для запуска виртуальных машин, вам, вероятно, знакомо использование Hyper-V Manager. Но вы знали, что вы можете выполнять больше задач за меньшее время с помощью модуля PowerShell для Hyper-V?
В этом уроке вы узнаете, как управлять виртуальными машинами Hyper-V с помощью PowerShell, включая создание, удаление, а также работу с снимками виртуальных машин!
Предварительные требования
Для этого урока вам понадобится следующее:
- A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
- A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
- A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.
Подключение к удаленному хосту Hyper-V
Для работы с Hyper-V в PowerShell необходимо как-то взаимодействовать с хостом Hyper-V. Вы можете сделать это локально, выполнив команды PowerShell для Hyper-V, указав имя хоста Hyper-V, или использовать PowerShell Remoting для подключения к самому хосту Hyper-V.
В этом уроке вы создадите постоянное соединение с хостом Hyper-V и выполняете команды на самом хосте Hyper-V.
1. Откройте PowerShell на вашем локальном компьютере.
2. Запустите командлет Enter-PSSession
, указав имя хоста вашего удаленного хоста Hyper-V для параметра ComputerName
. Это действие создает интерактивную сессию и позволяет вам выполнять команды интерактивно на удаленном хосте Hyper-V.
Если ваш клиент и хост Hyper-V являются членами одной доменной сети Active Directory, вам не нужно использовать параметр
Credential
.
3. Затем вам будет предложено ввести имя пользователя и пароль для подключения к хосту Hyper-V. Это имя пользователя и пароль будут локальным административным пользователем на удаленном хосте. После подключения вы должны увидеть, что ваш приглашение PowerShell изменилось, чтобы показать имя хоста Hyper-V.
Теперь вы готовы начать выполнять команды!
Создание виртуальных машин Hyper-V с помощью PowerShell
Предполагая, что вы теперь подключены к хосту Hyper-V с помощью удаленного управления PowerShell, давайте начнем выполнять команды, создавая виртуальную машину Hyper-V.
Создание простой виртуальной машины
Пока вы находитесь в сессии PSRemoting, подключенной к удаленному хосту Hyper-V:
Запустите командлет New-VM
, чтобы создать новую виртуальную машину. При создании виртуальной машины с помощью командлета New-VM
у вас есть множество различных параметров для выбора способа ее создания.
1. В этом примере ниже учебное пособие создает виртуальную машину с:
- A name of MyVM (
HYPER
) - 512 МБ оперативной памяти (
MemoryStartupBytes
)

Создание виртуальной машины на основе атрибутов другой виртуальной машины
Иногда вам может потребоваться создать ВМ с аналогичными атрибутами другой ВМ. Вы можете сделать это, но назначьте различные атрибуты ВМ переменным, а затем используйте эти переменные при создании новой ВМ. Вот пример:
1. Запустите Get-VM
, чтобы запросить атрибуты существующей ВМ, назначив вывод переменной, как показано ниже.
2. Запустите cmdlet Get-VMMemory
, указав имя ВМ, откуда собираются атрибуты (в данном случае, память), и назначьте значение памяти переменной.
3. Затем создайте новую ВМ с помощью cmdlet New-VM
, указав Name
, поколение ВМ (Generation
) с использованием свойства Generation
из другой ВМ и объем памяти из значения, полученного из другой ВМ.

Вывод существующих ВМ с помощью PowerShell
Теперь, когда у вас есть как минимум две ВМ, созданные на хосте Hyper-V, давайте изучим, как перечислить созданные ВМ. Для этого:
1. Запустите cmdlet Get-VM
самостоятельно. Когда вы запускаете без параметров, Get-VM
запрашивает хост Hyper-V для всех существующих ВМ. Get-VM

2. Возможно, вам хотелось бы найти только одну ВМ. В этом случае используйте параметр -Name
. Ниже приведена команда кода, запрашивающая у Hyper-V ВМ, созданную ранее с именем HYPER_old
. Get-VM -Name HYPER_old

Затем, возможно, вам нужно найти все ВМ, находящиеся в определенном State
. Нет проблем. Для этого запустите Get-VM
, который запрашивает все ВМ, но передайте вывод в cmdlet Where-Object
.
В приведенном ниже примере символ “|” ограничивает вывод команды Get-VM
только объектами ВМ с State
равным Running
. Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}

Запуск и остановка ВМ
На данный момент, ВМ, созданная ранее, вероятно, остановлена. Давайте изменим это, запустив ее, а затем узнаем, как также остановить ВМ.
В сеансе PowerShell удаленного хоста Hyper-V:
1. Выполните командлет Start-VM
, указав имя (Name
) ранее созданной ВМ с параметром -Name

Теперь, когда ВМ запущена, остановите ее с помощью командлета Stop-VM
, указав имя ВМ с параметром Name
.
Как только вы выполните указанную выше команду, вы увидите, как ВМ завершается, как показано на скриншоте ниже;

Изменение ВМ Hyper-V
ВМ не всегда остаются прежними. Возможно, вам нужно увеличить ресурсы ЦП, или ВМ постоянно исчерпывает память. В этом случае командлет Set-VM
будет вашим другом.
В качестве примера изменения существующих ВМ в сеансе PowerShell удаленного хоста Hyper-V:
Запустите командлет Set-VM
, чтобы автоматически выключить VM HYPER_old, которая в данный момент запущена. Используйте параметр Name
, чтобы указать VM, которую вы хотите настроить, и укажите значение Shutdown
для параметра AutomaticStopAction
, чтобы обеспечить автоматическое правильное выключение VM при выключении хоста Hyper-V.
Сохранение VM Hyper-V
В сеансе PowerShell удаленного хоста Hyper-V вам может потребоваться сохранить созданную вами VM, чтобы сохранить состояние памяти VM для последующего использования. Для этого используйте командлет Save-VM
с параметром Name
, указывающим имя VM, которую вы хотите сохранить.
Обратите внимание, что VM, которую вы хотите сохранить, должна находиться в состоянии Running.

Управление контрольными точками VM Hyper-V
Если вам нужно сохранить текущее состояние VM перед внесением изменений или откатом изменений VM, вам следует изучить контрольные точки. Контрольные точки – это удобный способ быстро сохранить диск и состояние памяти любой VM Hyper-V.
На вашем хосте Hyper-V выполните командлет Checkpoint-VM
, указав имя VM для сохранения и имя для контрольной точки.
Имя параметра
SnapshotName
все еще ссылается на старую терминологию, используемую в Hyper-V 2012. Снимок – это то же самое, что и контрольная точка.

Как только у вас создан контрольная точка, вы можете использовать Get-VMSnapshot
cmdlet для извлечения всех сохраненных снимков на хосте Hyper-V. Ниже вы можете увидеть, что у VM HYPER_old есть три контрольные точки.

Заключение
Если вы прошли все демонстрации в этом учебнике, вы хорошо продвигаетесь к управлению виртуальными машинами Hyper-V с помощью PowerShell. Теперь у вас должны быть знания, необходимые для управления 1, 10 или даже 100 виртуальными машинами!
Какие задачи вы теперь думаете, что можете автоматизировать с помощью PowerShell и Hyper-V?