Модуль PowerShell Hyper-V: Больше всего сделано

Если вы используете виртуализационную платформу 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.

Enter-PSSession -ComputerName HYPER -Credential (Get-Credential)

Если ваш клиент и хост 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)
New-VM -Name "HYPER" -MemoryStartupBytes 512MB
New VM named “HYPER”

Создание виртуальной машины на основе атрибутов другой виртуальной машины

Иногда вам может потребоваться создать ВМ с аналогичными атрибутами другой ВМ. Вы можете сделать это, но назначьте различные атрибуты ВМ переменным, а затем используйте эти переменные при создании новой ВМ. Вот пример:

1. Запустите Get-VM, чтобы запросить атрибуты существующей ВМ, назначив вывод переменной, как показано ниже.

$VMold = Get-VM "HYPER_old"

2. Запустите cmdlet Get-VMMemory, указав имя ВМ, откуда собираются атрибуты (в данном случае, память), и назначьте значение памяти переменной.

$memory = (Get-VMMemory -VMName $VMold.name).Startup

3. Затем создайте новую ВМ с помощью cmdlet New-VM, указав Name, поколение ВМ (Generation) с использованием свойства Generation из другой ВМ и объем памяти из значения, полученного из другой ВМ.

New-VM -Name "newVM" -Generation $VMold.Generation -MemoryStartupBytes $memory
New VM created from Old existing VM

Вывод существующих ВМ с помощью PowerShell

Теперь, когда у вас есть как минимум две ВМ, созданные на хосте Hyper-V, давайте изучим, как перечислить созданные ВМ. Для этого:

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

Get-VM
Output of Get-VM run with no Parameters

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

Get-VM -Name HYPER_old
Output of Get-VM run with the -Name Parameter

Затем, возможно, вам нужно найти все ВМ, находящиеся в определенном State. Нет проблем. Для этого запустите Get-VM, который запрашивает все ВМ, но передайте вывод в cmdlet Where-Object.

В приведенном ниже примере символ “|” ограничивает вывод команды Get-VM только объектами ВМ с State равным Running. Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}

Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}
Output of Get-VM filtering out the VM with the state of Running

Запуск и остановка ВМ

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

В сеансе PowerShell удаленного хоста Hyper-V:

1. Выполните командлет Start-VM, указав имя (Name) ранее созданной ВМ с параметром -Name

Start-VM -Name NewVM
The Start-VM command starting the VM named HYPER_old

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

Stop-VM -Name HYPER_old

Как только вы выполните указанную выше команду, вы увидите, как ВМ завершается, как показано на скриншоте ниже;

Stop-VM stopping the HYPER_old VM

Изменение ВМ Hyper-V

ВМ не всегда остаются прежними. Возможно, вам нужно увеличить ресурсы ЦП, или ВМ постоянно исчерпывает память. В этом случае командлет Set-VM будет вашим другом.

В качестве примера изменения существующих ВМ в сеансе PowerShell удаленного хоста Hyper-V:

Запустите командлет Set-VM, чтобы автоматически выключить VM HYPER_old, которая в данный момент запущена. Используйте параметр Name, чтобы указать VM, которую вы хотите настроить, и укажите значение Shutdown для параметра AutomaticStopAction, чтобы обеспечить автоматическое правильное выключение VM при выключении хоста Hyper-V.

Set-VM -Name HYPER_old -AutomaticStopAction Shutdown

Сохранение VM Hyper-V

В сеансе PowerShell удаленного хоста Hyper-V вам может потребоваться сохранить созданную вами VM, чтобы сохранить состояние памяти VM для последующего использования. Для этого используйте командлет Save-VM с параметром Name, указывающим имя VM, которую вы хотите сохранить.

Обратите внимание, что VM, которую вы хотите сохранить, должна находиться в состоянии Running.

Save-VM -Name HYPER_old
Save-VM cmdlet saving HYPER_old VM state.

Управление контрольными точками VM Hyper-V

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

На вашем хосте Hyper-V выполните командлет Checkpoint-VM, указав имя VM для сохранения и имя для контрольной точки.

Имя параметра SnapshotName все еще ссылается на старую терминологию, используемую в Hyper-V 2012. Снимок – это то же самое, что и контрольная точка.

Checkpoint-VM -Name HYPER_old -SnapshotName MyVMSnapshot
Using Checkpoint-VM to create a Snapshot of HYPER_old VM called MyVMSnapshot

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

Get-VMSnapshot -VMName HYPER_old
Retrieves all the Snapshots stored for HYPER_old VM

Заключение

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

Какие задачи вы теперь думаете, что можете автоматизировать с помощью PowerShell и Hyper-V?

Source:
https://adamtheautomator.com/hyper-v-powershell/