Управление виртуальными машинами Hyper-V с помощью PowerShell
Статья посвящена особенностям управления виртуальными машинами Hyper-V из консоли PowerShell. Мы рассмотрим создание виртуальных коммутаторов и виртуальных машин, изменение настроек ВМ и управление ими. Вы сможете использовать рассмотренные команды для ручного управления своими ВМ или в PowerShell скриптах для автоматизации различных задачей.
Установка роли Hyper-V в Windows Server и Windows 10
Для установки роли Hyper-V хост должен иметь процессор, поддерживающий виртуализацию со SLAT. В Windows Server для установки роли Hyper-V используется команда:
В десктопных редакциях (Windows 10 и 11) роль Hyper-V устанавливается так:
Для управления хостом Hyper-V на компьютере должен быть установлен модуль Hyper-V. Полный список команд в модуле (зависит от версии Windows) можно вывести так:
В Windows Server 2022 в модуле Hyper-V доступно 245 командлетов.
Вывести полный список настроек хоста Hyper-V можно с помощью команды:
Чтобы вывести только информацию о количестве доступных ядер и RAM:
Get-VMHost| select LogicalProcessorCount, MemoryCapacity
Чтобы изменить настройки хоста Hyper-V используется командлет Set-VMHost. Следующая команда изменит пути по-умолчанию для хранения виртуальных дисков и конфигурационных файлов ВМ:
Создаем виртуальный коммутатор Hyper-V с помощью PowerShell
Прежде всего на сервере Hyper-V нужно создать виртуальный коммутатор. Виртуальные машины смогут получать доступ к сети только через виртуальный коммутатор.
Выведем список доступных физических адаптеров на хосте Hyper-V:
Создайте виртуальный внешний коммутатор:
Создание и изменение настроек виртуальной машины Hyper-V с помощью PowerShell
Для создания новой виртуальной машины используется командлет New-VM. В этом примере мы создадим новую ВМ второго поколения с 1 ГБ RAM и vhdx диском размером 5 Гб.
Рассмотрим команды, которые можно использовать для изменения настроек виртуальных машин.
Увеличить размер RAM для ВМ:
Get-VM –VMname spb-dmz1 | Set-VM –AutomaticStartAction Start
Чтобы подключить дополнительный виртуальный диск в ВМ, нужно сначала создать его:
А затем подключить к ВМ:
Используем PowerShell для управления виртуальными машинами Hyper-V
Вывести список виртуальных машин на хосте Hyper-V:
Команда вернула список ВМ с несколькими базовыми характеристиками. Чтобы вывести все свойства ВМ, выполните:
Вывести только включенные ВМ:
Запустить виртуальную машину:
Запустить все выключенные виртуальные машины:
Выключить ВМ (корректное выключение через гостевую ОС):
Чтобы выключить ВМ по питанию используется ключ TurnOff:
Подключить ISO файл в виртуальное CD/DVD устройство:
Чтобы перенести все файлы ВМ на лету на другой диск, используйте команду:
Создать чекпоинт (снапшот) указанной ВМ:
Вывести список доступных чекпоинтов:
Вернуть состояние ВМ из предыдущему чекпоинту:
Экспорт, импорт и клонирование ВМ описаны подробно в статье по ссылке:
Получить IP адреса гостевых ОС виртуальных машин:
Подключиться к консоли определенной виртуальной машины:
vmconnect.exe localhost spb-app01
Для подключения PowerShell сессией напрямую к гостевым ОС виртуальных машин через шину vmbus можно использовать PowerShell Direct (доступен для гостевых ОС Windows Server 2016, Windows 10 и новее). Можно использовать командлеты Invoke-Command (для запуска скриптов) и Enter-PSSession (для входа в интерактивную PowerShell сессию):
Для копирования файлов с хоста Hyper-V в виртуальную машину через PowerShell Direct используйте:
Вы можете использовать PowerShell для локального или удаленного управления виртуальными машинами на хостах Hyper-V (как на Windows Server в режимах Full GUI или Core, так и на Free Windows Hyper-V Server, или Windows 10) как отдельно, так и в дополнении к графическим средствам управления Hyper-V Manager и Windows Admin Center.
Работа с Hyper-V и Windows PowerShell
Изучив основы развертывания Hyper-V, создания виртуальных машин и управления ими, давайте теперь узнаем, как можно автоматизировать многие из связанных с этим действий с помощью PowerShell.
Получение списка команд Hyper-V
Отобразится примерно следующее:
Отобразится информация о синтаксисе команды, обязательных и дополнительных параметрах, а также псевдонимах, которые можно использовать.
Получение списка виртуальных машин
Отобразится примерно следующее:
Запуск и завершение работы виртуальных машин
Создание контрольной точки виртуальной машины
Создание новой виртуальной машины
Следующий пример демонстрирует создание виртуальной машины в интегрированной среде сценариев (ISE) PowerShell. Это простой пример. Его можно усложнить, добавив дополнительные функции PowerShell и расширенные сценарии развертывания виртуальной машины.
Подведение итогов и справочные материалы
Этот документ позволяет ознакомиться с модулем PowerShell Hyper-V на примере некоторых простых шагов, а также отдельными примерами сценариев. Дополнительные сведения о модуле PowerShell Hyper-V см. в справочнике по командлетам Windows PowerShell для Hyper-V.
Установка Hyper-V в Windows 10
Включение Hyper-V для создания виртуальных машин в Windows 10.
Hyper-V можно включить разными способами, в том числе используя панель управления Windows 10, PowerShell или с помощью средства обслуживания образов развертывания и управления ими (DISM). В этом документе последовательно описан каждый из указанных способов.
Примечание. Механизм Hyper-V встроен в Windows в качестве дополнительной функции. Скачать Hyper-V нельзя.
Проверьте следующие требования
Роль Hyper-V невозможно установить в Windows 10 Домашняя.
Выполните обновление с выпуска Windows 10 Домашняя до выпуска Windows 10 Pro, открыв раздел Параметры Обновление и безопасность Активация.
Дополнительные сведения и советы по устранению неполадок см. в статье Требования к системе для Hyper-V в Windows 10.
Включение Hyper-V с помощью PowerShell
Откройте консоль PowerShell от имени администратора.
Выполните следующую команду:
Если не удается найти команду, убедитесь, что вы используете PowerShell от имени администратора.
После завершения установки выполните перезагрузку.
Включение Hyper-V с помощью CMD и DISM
Система обслуживания образов развертывания и управления ими (DISM) позволяет настраивать ОС Windows и образы Windows. Помимо всего прочего? средство DISM может включать функции Windows во время выполнения операционной системы.
Чтобы включить роль Hyper-V с помощью DISM, выполните указанные ниже действия.
Запустите PowerShell или сеанс CMD от имени администратора.
Введите следующую команду:
Дополнительные сведения о DISM см. в разделе Техническое руководство по DISM.
Включение роли Hyper-V через раздел «Параметры»
Щелкните правой кнопкой мыши кнопку Windows и выберите пункт «Приложения и компоненты».
Выберите Программы и компоненты справа в разделе связанные параметры.
Выберите пункт Включение или отключение компонентов Windows.
Выберите Hyper-V и нажмите кнопку ОК.
После завершения установки вам будет предложено перезапустить компьютер.
Автоматизация виртуальных машин и управление ими с помощью PowerShell
Создание и завершение интерактивного сеанса PowerShell
Для выполнения команд PowerShell на виртуальной машине проще всего запустить интерактивный сеанс.
При запуске сеанса вводимые команды выполняются на виртуальной машине, как если бы вы вводили их непосредственно в сеансе PowerShell на самой виртуальной машине.
Запуск интерактивного сеанса:
На узле Hyper-V откройте PowerShell от имени администратора.
Выполните одну из указанных ниже команд, чтобы создать интерактивный сеанс, используя имя или GUID виртуальной машины:
Укажите учетные данные для виртуальной машины при отображении соответствующего запроса.
Для вашей командной строки PowerShell должен отображаться префикс VMName, как показано ниже:
После завершения работы выполните следующую команду, чтобы закрыть сеанс:
Примечание. Если сеанс не подключается, см. раздел Диагностика для определения возможных причин.
Дополнительные сведения об этих командлетах см. в разделах Enter-PSSession и Exit-PSSession.
Запуск сценария или команды с помощью командлета Invoke-Command
PowerShell Direct с Invoke-Command идеально подходит для ситуаций, когда нужно выполнить одну команду или один сценарий на виртуальной машине, после чего можно прекратить взаимодействие с виртуальной машиной.
Запуск одной команды:
На узле Hyper-V откройте PowerShell от имени администратора.
Выполните одну из указанных ниже команд, чтобы создать сеанс, используя имя или GUID виртуальной машины:
Укажите учетные данные для виртуальной машины при отображении соответствующего запроса.
Команда выполняется на виртуальной машине. При наличии выходных данных они выводятся на вашу консоль. Подключение будет закрыто автоматически сразу после запуска команды.
Запуск скрипта:
На узле Hyper-V откройте PowerShell от имени администратора.
Выполните одну из указанных ниже команд, чтобы создать сеанс, используя имя или GUID виртуальной машины:
Укажите учетные данные для виртуальной машины при отображении соответствующего запроса.
Сценарий выполняется на виртуальной машине. Подключение будет закрыто автоматически сразу после запуска команды.
Дополнительные сведения об этом командлете см. в статье Invoke-Command.
Копирование файлов с помощью New-PSSession и Copy-Item
Примечание. В сборках Windows 14280 и более поздних версий PowerShell Direct поддерживает только постоянные сеансы.
Постоянные сеансы PowerShell чрезвычайно полезны при написании сценариев, координирующих действия для одного или нескольких удаленных компьютеров. После создания постоянные сеансы выполняются в фоновом режиме, пока вы не решите удалить их. Это означает, что можно снова и снова ссылаться на один и тот же сеанс с помощью Invoke-Command или Enter-PSSession без передачи учетных данных.
По той же причине сеансы сохраняют состояние. Так как постоянные сеансы сохраняются, все созданные или переданные в них переменные сохраняются между вызовами. Существует несколько средств для работы с постоянными сеансами. В этом примере мы будем использовать New-PSSession и Copy-Item для перемещения данных с узла в виртуальную машину и из виртуальной машины на узел.
Создание сеанса с последующим копированием файлов:
На узле Hyper-V откройте PowerShell от имени администратора.
Укажите учетные данные для виртуальной машины при отображении соответствующего запроса.
Чтобы скопировать C:\host_path\data.txt на виртуальную машину с хост-компьютера, выполните следующую команду:
Чтобы скопировать C:\guest_path\data.txt на узел с виртуальной машины, выполните следующую команду:
Устранение неполадок
В PowerShell Direct выводится небольшой набор сообщений о распространенных ошибках. Ниже приведены наиболее распространенные ошибки, возможные причины и средства диагностики.
Возможные причины:
Скорее всего, проблема состоит в том, что PowerShell Direct не поддерживается операционной системой сервера виртуальных машин.
Проверить сборку Windows можно с помощью следующей команды:
Если применяется поддерживаемая сборка, возможно, ваша версия PowerShell не использует PowerShell Direct. Для PowerShell Direct и JEA требуется основной номер версии 5 или выше.
Проверить версию PowerShell можно с помощью следующей команды:
Ошибка: «Возможно, удаленный сеанс был завершен»
Примечание.
Для Enter-PSSession в сборках узла с 10240 по 12400 все описанные ниже ошибки регистрируются как «Возможно, удаленный сеанс был завершен».
Сообщение об ошибке:
Возможные причины:
Можно использовать командлет Get-VM, чтобы узнать, какие виртуальные машины выполняются на узле.
Сообщение об ошибке:
Возможные причины:
Чтобы обойти эту проблему с учетными данными, войдите на виртуальную машину с помощью VMConnect, откройте PowerShell и перезапустите службу vmicvmsession, используя следующую команду PowerShell:
Ошибка: набор параметров не может быть разрешен
Сообщение об ошибке:
Возможные причины:
-RunAsAdministrator не поддерживается при подключении к виртуальным машинам.
Ошибка. Недопустимые учетные данные.
Сообщение об ошибке:
Возможные причины:
Ошибка. Входной параметр VMName не разрешается ни в одну виртуальную машину.
Сообщение об ошибке:
Возможные причины:
С помощью командлета Get-VM можно проверить, имеется ли у используемых учетных данных роль администратора Hyper-V, а также просмотреть, какие виртуальные машины запущены локально и загружены.
Примеры и руководства пользователя
PowerShell Direct поддерживает JEA (Just Enough Administration). Чтобы оценить эту функцию, воспользуйтесь этим руководством пользователя.
См. примеры на веб-сайте GitHub.
С помощью PowerShell Direct можно запускать произвольный код PowerShell на виртуальной машине с Windows 10 или Windows Server 2016 с узла Hyper-V независимо от конфигурации сети и параметров удаленного управления.
Запустить PowerShell Direct можно несколькими способами.
Требования
Требования к операционной системе:
Если вы управляете виртуальными машинами более ранних версий, используйте средство «Подключение к виртуальной машине» (VMConnect) или настройте для этой машины виртуальную сеть.
Требования к конфигурации:
установка роли Hyper-V на сервере Windows
Область применения: Windows Server 2022, Windows Server 2016, Windows Server 2019
чтобы создать и запустить виртуальные машины, установите роль Hyper-V на Windows Server с помощью диспетчер сервера или командлета install-WindowsFeature в Windows PowerShell. дополнительные Windows 10 см. в статье установка Hyper-V на Windows 10.
Дополнительные сведения о Hyper-V см. в статье Обзор технологии Hyper-v. чтобы испытать Windows сервере 2019, можно скачать и установить ознакомительную версию. См. Центр оценки.
перед установкой Windows Server или добавьте роль Hyper-V, убедитесь в том, что:
Если вы хотите установить только средства управления, такие как диспетчер Hyper-V, см. раздел Удаленное управление узлами Hyper-v с помощью диспетчера Hyper-v.
Установка Hyper-V с помощью диспетчер сервера
В диспетчере серверов в меню Управление выберите Добавить роли и компоненты.
На странице Приступая к работе убедитесь, что конечный сервер и сетевое окружение подготовлены к установке нужной вам роли или компонента. Щелкните Далее.
На странице Выбор типа установки выберите Установка ролей или компонентов и нажмите кнопку Далее.
На странице Выбор целевого сервера выберите сервер из пула серверов и нажмите кнопку Далее.
На странице Выбор ролей сервера выберите Hyper-V.
Чтобы добавить средства для создания виртуальных машин и управления ими, щелкните Добавить компоненты. На странице «Компоненты» нажмите кнопку Далее.
Выберите нужные параметры на страницах Создание виртуальных коммутаторов, Миграция виртуальной машины и Хранилища по умолчанию.
На странице Подтверждение выбранных элементов для установки выберите Автоматический перезапуск конечного сервера, если требуется и нажмите кнопку Установить.
После завершения установки убедитесь, что Hyper-V установлен правильно. Откройте страницу все серверы в Диспетчер сервера и выберите сервер, на котором установлена Hyper-V. Просмотрите плитку роли и компоненты на странице выбранного сервера.
Установка Hyper-V с помощью командлета Install-WindowsFeature
На рабочем столе Windows нажмите кнопку «Пуск» и введите любую часть имени Windows PowerShell.
щелкните правой кнопкой мыши Windows PowerShell и выберите запуск от имени администратора.
Чтобы установить Hyper-V на сервере, к которому вы подключены удаленно, выполните следующую команду и замените именем сервера.
После перезагрузки сервера можно увидеть, что роль Hyper-V установлена и узнать, какие другие роли и компоненты установлены, выполнив следующую команду: