Управление Hyper-V из командной строки (часть 8)

Опубликовано: 20 Апреля, 2023

Введение

В этой серии статей я показал вам, как выполнять различные задачи управления виртуальными машинами из командной строки. Я даже провел вас через процесс создания совершенно новой виртуальной машины с нуля, а затем изменения распределения аппаратного обеспечения этой виртуальной машины, и все это из командной строки.

Хотя я думаю, что на этом этапе я рассмотрел все основы, есть одна последняя тема, о которой я хотел бы поговорить, прежде чем я завершу эту серию. Точно так же, как вы можете создавать виртуальные машины и управлять ими из командной строки, вы также можете создавать моментальные снимки виртуальных машин и управлять ими с помощью PowerShell. В этой статье я покажу вам, как это сделать.

Прежде чем я начну

Прежде чем я начну, я хочу быстро отметить для всех, кто только присоединяется к этой серии, что команды, которые я буду обсуждать, не являются родными для Hyper-V. Они являются частью библиотеки управления Hyper-V. Кроме того, эту библиотеку необходимо импортировать в PowerShell каждый раз, когда вы планируете использовать какие-либо команды, связанные с Hyper-V. Команда импорта:

Полные инструкции по загрузке и установке библиотеки управления Hyper-V приведены в части 1 этой серии.

Между прочим, загружать модуль Hyper-V для PowerShell вручную и импортировать его вручную не всегда будет необходимо. Модуль Hyper-V будет включен в Windows Server 2012.

Работа со снимками

Один из первых приемов, который я хочу вам показать, заключается в получении списка всех моментальных снимков, существующих на определенном хосте Hyper-V. Это можно сделать, введя команду Get-VMSnapshot. Когда вы это сделаете, Hyper-V отобразит таблицу с описанием снимка, виртуальной машиной, для которой был создан снимок, порядком загрузки виртуальной машины и временем создания снимка виртуальной машины.

Хотя иногда удобно иметь возможность просматривать моментальные снимки виртуальных машин на уровне хоста, часто полезнее иметь возможность просматривать моментальные снимки для каждой виртуальной машины. Самый простой способ сделать это — добавить имя виртуальной машины к команде Get-VMSnapshot. Например, чтобы просмотреть все снимки виртуальной машины с именем Storage, введите: Get-VMSnapshot Storage.

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

Изображение 26466
Рисунок A: Вы можете использовать команду Get-VMSnapshot для получения информации о снимке.

Как вы можете видеть на рисунке выше, информация о снимке указана для указанной виртуальной машины. Однако снимки обычно отображаются в виде дерева, чтобы было легче сказать, как снимки связаны друг с другом. Если вы предпочитаете просматривать снимки в виде дерева, вы можете легко сделать это с помощью команды Get-VMSnapshotTree. Синтаксис этой команды идентичен синтаксису команды Get-VMSnapshot. На самом деле, на рис. B показаны как команда Get-VMSnapshot, так и команда Get-VMSnapshotTree, так что вы можете увидеть разницу в выводе команды.

Изображение 26467
Рисунок B: Команда Get-VMSnapshotTree отображает информацию о снимке в виде дерева.

Создание снимка

Модуль Hyper-V для PowerShell действительно предоставляет несколько приятных возможностей, когда дело доходит до создания моментальных снимков. В самом простом случае вы можете создать новый снимок, введя команду New-VMSnapshot, за которой следует имя виртуальной машины, для которой вы хотите сделать снимок. Если вы хотите, вы можете даже добавить параметр Note, чтобы оставить себе заметку о цели снимка. Конечно, создание заметки совершенно необязательно.

Чтобы показать вам, как это работает, предположим, что я хочу создать моментальный снимок виртуальной машины с именем Storage. Для этого я бы ввел следующую команду:

Когда вы выполняете эту команду, PowerShell спросит вас, хотите ли вы выполнить это действие. Затем вы увидите предупреждающее сообщение о том, что операция выполняется в фоновом режиме. Вы можете использовать команду Get-VMSnapshot, чтобы убедиться, что снимок был создан, как показано на рисунке C.

Изображение 26468
Рисунок C: Снимки можно создавать из командной строки.

Еще одна интересная вещь, которую вы можете сделать, — это последовательно создавать несколько снимков. Например, у меня есть хост-сервер, на котором большинство виртуальных машин носит имя Лаборатория. Если бы я захотел, я мог бы создать моментальные снимки всех виртуальных машин моей лаборатории с помощью подстановочных знаков. Хитрость заключается в том, чтобы объединить команду New-VMSnapshot с командой Get-VM, которую я показал вам в предыдущей части этой серии. Полная команда выглядит примерно так:

Вы заметите, что мне пришлось указать имя моего хоста Hyper-V, которое было названо Hyper-V. Что еще более важно, мне пришлось указать параметр –Wait в конце команды. Это заставляет Hyper-V ждать создания одного моментального снимка перед запуском следующего. Вы можете увидеть команду и ее вывод на рисунке D.

Изображение 26469
Рисунок D: Вы можете создать несколько снимков с помощью одной команды.

Откат снимка

Итак, что произойдет, если вы захотите откатить виртуальную машину до предыдущего состояния? Ну, вы можете легко выполнить откат виртуальной машины с помощью команды Restore-VMSnapshot.

Прежде чем вы сможете использовать эту команду, вы должны выбрать моментальный снимок, который хотите удалить. Это достигается с помощью команды Select-VMSnapshot. После того, как вы выбрали нужный снимок, вы можете откатить виртуальную машину с помощью команды Restore-VMSnapshot.

Чтобы показать вам, как работает эта команда, учтите, что ранее я создал снимок виртуальной машины с именем Storage. Как вы помните, для этой виртуальной машины уже существовало несколько моментальных снимков. Поэтому, если я хочу откатить виртуальную машину до предыдущего состояния, необходимо выбрать, какой снимок я хочу использовать.

Команда для этого:

Когда я выполняю команду, PowerShell спрашивает, какой снимок я хочу использовать. Когда я делаю свой выбор, происходит откат виртуальной машины, как показано на рисунке E.

Изображение 26470
Рисунок E: Вы должны выбрать моментальный снимок, который хотите откатить.

Удаление снимка

Вы можете использовать очень похожую технику для удаления моментального снимка. В процессе удаления используется команда Remote-VMSnapshot. Синтаксис этой команды идентичен синтаксису команды Restore-VMSnapshot. Например, если вы хотите удалить моментальный снимок виртуальной машины с именем Storage, вы можете использовать следующую команду:

Эта команда также дает вам возможность удалить все дерево моментальных снимков. Для этого просто добавьте переключатель –Tree в конец команды следующим образом:

Хранилище Select-VMSnapshot | Remove-VMSnapshot-Tree

Вывод

Как видите, полностью управлять виртуальными машинами Hyper-V можно из командной строки. Хотя методы, которые я обсуждал, требуют дополнительного модуля, Hyper-V 3.0 будет включать собственные функции PowerShell.