Основные команды PowerShell для Hyper-V: что это такое и как их использовать

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

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

Что такое PowerShell?

PowerShell – это средство автоматизации задач и управления конфигурацией, разработанное Microsoft, которое включает оболочку командной строки и связанный язык сценариев, построенный на платформе .NET Framework и .NET Core.

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

Что может делать PowerShell?

PowerShell может помочь администраторам Hyper-V быстро автоматизировать задачи, связанные с управлением операционных систем (Linux, macOS и Windows) и соответствующих процессов. В отличие от инструментов с графическим интерфейсом, PowerShell позволяет управлять всей системой, используя только командную строку.

Более того, вы можете сохранить необходимые команды PowerShell Hyper-V в текстовом файле (с расширением .ps1) и затем запустить этот сценарий для выполнения определенных задач. Более того, вы можете запланировать выполнение сценариев PowerShell на установленное время, используя Планировщик задач.

Как открыть PowerShell

Существует несколько способов запуска PowerShell в Hyper-V. Простой способ получить доступ к PowerShell – подключиться непосредственно к серверу Hyper-V и запустить его оттуда. Чтобы подключиться удаленно к хосту Hyper-V, необходимо убедиться, что удаленный рабочий стол включен. После включения удаленного рабочего стола мы можем использовать утилиту удаленного рабочего стола и подключаться удаленно к серверу, как это делается с любым графическим интерфейсом пользователя Windows Server.

Открытие PowerShell из графического интерфейса

Чтобы открыть PowerShell в основе графического интерфейса ОС, выполните следующие действия:

  1. Вам нужно нажать Пуск и ввести PowerShell в строку поиска.
  2. Щелкните правой кнопкой мыши на значке PowerShell и выберите Запуск от имени администратора, чтобы открыть PowerShell в повышенном режиме.

Открытие PowerShell из командной строки

Чтобы запустить PowerShell, если вы используете Windows Server Core или Hyper-V Server, выполните следующие действия:

  1. Введите PowerShell в командной строке и нажмите Enter.
  2. A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
  3. После того как вы находитесь в PowerShell, вы можете использовать специфические для Hyper-V команды PowerShell, о которых мы расскажем ниже в этом посте.

Настройки удаленного доступа

Чтобы проверить настройки удаленного рабочего стола в Windows Server Core или Hyper-V Server, вы можете запустить утилиту sconfig, если она еще не запущена, и настроить ее, используя опцию 7. Также, после удаленного подключения к хосту Hyper-V, вы можете использовать опцию 15 для Выход в командную строку.

После этого вы находитесь в обычной среде cmd.exe – а не в PowerShell. Чтобы запустить среду PowerShell, просто введите powershell в командной строке.

Удаленный PowerShell

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

С административной рабочей станции, на которой загружены инструменты управления Hyper-V, мы можем выполнить наши команды Hyper-V. Сначала нам нужно установить инструменты Hyper-V, включая эти командлеты (командлеты).

Install-WindowsFeature RSAT-Hyper-V-Tools

После загрузки инструментов мы можем выполнять те же типы команд, используя параметр -computername, указывающий на наш хост Hyper-V, как показано на скриншоте ниже. Мы передаем имя нашего хоста командлету PowerShell get-vm.

12 важных команд PowerShell для Hyper-V

Существует несколько эффективных команд PowerShell для Hyper-V, которые могут упростить процесс управления Hyper-V. Давайте посмотрим, как можно использовать различные команды PowerShell для Hyper-V.

Get-Command

Начнем с команды PowerShell для Hyper-V, которая полезна для пользователей, которые новички в PowerShell и не знают, какие командлеты следует использовать и как. Запустив командлет Get-Command, вы можете увидеть полный список всех доступных командлетов (команд Windows PowerShell), функций и псевдонимов, установленных на компьютере.

Однако, если вы хотите уточнить свой запрос и получить список команд PowerShell Hyper-V, которые соответствуют определенным критериям, вы можете использовать командлет Get-Command *-VM, чтобы найти список команд, позволяющих управлять и настраивать виртуальные машины.

Изменяя параметр VM на VHD, вы можете получить полный список командлетов, используемых для управления виртуальными жесткими дисками. Таким образом, вы можете попробовать различные параметры поиска, чтобы получить необходимые результаты.

Get-Help

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

Get-Help Get-VM

Get-VM

Команда PowerShell Get-VM позволяет просмотреть все виртуальные машины, доступные на одном или нескольких хостах Hyper-V. Чтобы увидеть все виртуальные машины на локальном хосте Hyper-V, вы должны выполнить командлет Get-VM PowerShell.

На экране PowerShell вы увидите список доступных виртуальных машин, включая их имя, состояние, использование ЦП, выделенную память, время работы, статус и версию.

Start-VM

Этот конкретный командлет PowerShell start VM помогает вам запустить виртуальную машину. Для этого выполните следующую команду PowerShell Hyper-V:

Start-VM -Name 'Windows Server 2016'

В результате виртуальная машина с именем Windows Server 2016 запускается на вашем локальном хосте Hyper-V. Давайте проверим, действительно ли виртуальная машина запущена, запустив командлет Get-VM.

Кроме того, вы можете использовать измененную версию cmdlet PowerShell Start-VM для запуска виртуальных машин только в случае, если их имена начинаются с Hyper-V:

Start-VM -Name Hyper-V*

Как видите, виртуальная машина с именем Hyper-V Server Desktop успешно запущена. Однако другая ВМ (Hyper-V Server 2012) уже находится в состоянии выполнения, и PowerShell уведомляет вас об этом.

Stop-VM

Cmdlet Stop-VM позволяет выключить или отключить виртуальную машину. Для этого вы можете выполнить следующую команду:

Stop-VM -Name 'Windows Server 2016'

Как видите, выбранная ВМ успешно выключена через гостевую ОС.

Другой пример – вы можете отключить ВМ, имена которых начинаются с Hyper-V:

Stop-VM -Name Hyper-V* -TurnOff

Если вы обнаружите, что ваша ВМ не отвечает, вы можете принудительно ее выключить. Для этого выполните следующую команду PowerShell:

Stop-VM -Name 'Windows Server 2016' -Force

Обратите внимание, что принудительное выключение аналогично отключению питания физической машины, что может привести к потере данных приложений, не сохраненных до этого. В этом случае рекомендуется сохранить ВМ, чтобы избежать потенциальной потери данных. Для этого нужно выполнить cmdlet Save-VM, который эквивалентен гибернации физического компьютера:

Save-VM -Name 'Windows Server 2016'

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

Get-VM -Name Hyper-V* | Save-VM

Checkpoint-VM

Команда Checkpoint-VM помогает создать точку сохранения виртуальной машины Hyper-V (также известную как снимок Hyper-V). Запустите следующую команду, чтобы создать точку сохранения с именем Update1 для указанной виртуальной машины (Windows Server 2016):

Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1

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

Get-VMSnapshot -VMName 'Windows Server 2016'

С другой стороны, если вы хотите удалить определенные снимки Hyper-V, вы можете использовать командлет Remove-VMSnapshot. Например, если мы хотим удалить все снимки виртуальной машины, имена которых начинаются с Testing, мы должны выполнить следующую команду:

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*

На скриншоте выше демонстрируется весь процесс удаления выбранных снимков Hyper-V.

Test-VHD

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

Test-VHD -Path C:\Testing.vhd

В случае, если путь к VHD действителен, вы увидите следующий вывод на экране:

Чтобы узнать больше о управлении виртуальными жёсткими дисками с использованием командлетов PowerShell, мы рекомендуем прочитать нашу статью в блоге о основах работы с файлами Hyper-V VHD и VHDX.

Эта команда PowerShell Hyper-V позволяет собирать данные использования ресурсов для определенной виртуальной машины. Например, выполните следующую команду, чтобы узнать о использовании процессора, ОЗУ, дисковом пространстве и сетевом трафике для виртуальной машины с именем Windows Server 2016:

Measure-VM -VMName 'Windows Server 2016'

Обратите внимание, что командлет Measure-VM может сообщать требуемые данные только после включения измерения ресурсов на виртуальной машине. Чтобы включить измерение ресурсов, используйте следующую команду PowerShell Hyper-V:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

Get-VMNetworkAdapter

Другая полезная команда PowerShell – Get-VMNetworkAdapter, которая позволяет определить виртуальные сетевые адаптеры выбранной виртуальной машины. Например, если вы хотите найти виртуальные сетевые адаптеры из всех виртуальных машин, а также операционной системы управления, вам следует выполнить следующую команду PowerShell Hyper-V:

Get-VMNetworkAdapter –All

Если всё правильно, вы должны увидеть следующую информацию в своей консоли PowerShell:

С помощью команд PowerShell Hyper-V вы можете выполнять различные простые и сложные задачи с сетевыми адаптерами Hyper-V. Ознакомьтесь с нашим руководством по командам, которые могут помочь управлять и настраивать виртуальные сетевые адаптеры в вашей среде Hyper-V.

Update-VMVersion

В PowerShell есть команда, позволяющая обновить версию выбранной виртуальной машины:

Update-VMVersion -Name 'TestVM'

После выполнения команды PowerShell Hyper-V виртуальная машина с именем TestVM может быть обновлена до текущей версии ВМ.

Get-Process

Эта команда PowerShell Hyper-V может помочь вам просмотреть все текущие процессы на вашем локальном компьютере. После выполнения команды Get-Process вы можете получить следующую информацию на экране:

Эта таблица включает информацию о:

  • количестве дескрипторов, которые процесс открыл
  • количестве непрошедшей страницами памяти, используемой процессом
  • количестве разрешаемой страницами памяти, используемой процессом
  • размере набора рабочего набора процесса
  • количестве виртуальной памяти, используемой процессом
  • количестве времени процессора, выделенного всем процессорам
  • ID процесса
  • имени процесса

Чтобы сузить поиск и найти конкретный процесс, вы должны ввести имя процесса или его идентификатор. Например, если вы хотите узнать, как в настоящее время работает Microsoft Word, вам следует просмотреть список всех запущенных процессов и найти строку с информацией о Microsoft Word (то есть WinWord), включая его идентификатор процесса. Используя идентификатор процесса, вы можете выполнить следующую команду, чтобы получить необходимые данные:

Get-Process -ID 8892

Кроме того, данные о текущих процессах WinWord можно представить в другом формате, а именно в виде списка свойств. Выполните эту команду, чтобы получить более подробный вывод:

Get-Process WINWORD | Format-List *

Получив данные о процессе, вы можете выполнить следующие команды:

  • Stop-Process позволяет остановить один или несколько работающих процессов.
  • Wait-Process позволяет дождаться остановки одного или нескольких работающих процессов перед включением любого другого ввода.
  • Start-Process позволяет запустить один или несколько процессов на локальном компьютере.
  • Debug-Process позволяет присоединить отладчик к одному или нескольким работающим процессам на локальном компьютере.

Например, если вы хотите запустить приложение Блокнот из PowerShell, вам следует выполнить следующую команду:

Start-Process -FilePath "notepad.exe"

Еще один пример – когда вы открыли PowerShell в «обычном» режиме, но вам нужно запустить PowerShell в повышенном режиме, чтобы получить доступ к административным правам. В таком случае выполните следующую команду PowerShell Hyper-V:

Start-Process -FilePath "powershell" -Verb RunAs

С другой стороны, если один из запущенных процессов перестает отвечать, вы можете выполнить командлет Stop-Process, чтобы приостановить неисправное приложение:

Stop-Process -Name "notepad"

В этом случае все экземпляры приложения Блокнот на локальном компьютере останавливаются.

Каждый экземпляр Блокнота имеет свой собственный идентификатор процесса. Если вы хотите остановить определенный экземпляр Блокнота, вы должны использовать параметр ID в командлете Stop-Process. Для этого сначала выполните командлет Get-Process, найдите необходимые активные процессы и определите идентификатор процесса, который вы хотите остановить.

Например, вы можете остановить конкретный процесс Блокнота, определив его идентификатор процесса и выполнить следующую команду PowerShell Hyper-V:

Stop-Process -ID 5052

В результате будет остановлен только выбранный процесс Блокнота.

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

Where-Object

Эта команда PowerShell Hyper-V позволяет фильтровать объекты конвейера и находить именно те данные, которые вам нужны. В этом случае вам нужно создать сценарий PowerShell, в котором вы укажете, какие объекты могут быть переданы по конвейеру. Используя различные критерии поиска, вы можете найти любой объект на локальном компьютере.

Например, если вы хотите найти процессы, которые остановились, используйте эту команду:

Get-Service | Where-Object {$_.Status -eq 'Stopped'}

Еще один пример использования командлета Where-Object – когда вы хотите найти определенную команду. Следующая команда PowerShell Hyper-V может помочь вам найти все командлеты, которые начинаются с Wait:

Get-Command | Where-Object {$_.Name -like '*wait*'}

Следующий командлет Where-Object может помочь вам найти определенный процесс только по его имени. Запустив следующую команду, вы получите список всех процессов, имена которых начинаются с sys:

Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}

Как создать виртуальную машину Hyper-V с помощью PowerShell

Одна из мощных встроенных функций Hyper-V – использование PowerShell для операций управления. Среди многих вещей, которые мы можем сделать с помощью PowerShell в Hyper-V, – создание виртуальных машин. Давайте рассмотрим набор команд PowerShell Hyper-V для создания новых виртуальных машин.

Команды PowerShell для создания новой виртуальной машины

Для создания новой виртуальной машины второго поколения с новым 60-GB VHDX жестким диском и подключения к определенному виртуальному переключателю (в данном случае, “ExternalSwitch”), на вашем узле Hyper-V выполните следующие команды PowerShell.

  1. Создание VMM:

    new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\virtualhard disks\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"

  2. Для добавления DVD-ドラIVE с ISO-й образом для загрузки, мы можем выполнить дополнительные команды:

    Add-vmscsicontroller -vmname WSTEST

    Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:\ISO\my.iso

  3. Если мы хотим создать диск фиксированного размера и прикрепить его к нашей виртуальной машине, мы можем выполнить следующие действия, чтобы создать диск VHDX фиксированного размера и прикрепить его к нашей виртуальной машине:

    new-vhd -path "d:\hyper-v\virtual hard disks.wstest.vhdx" -sizebytes 60GB -fixed

    add-vmharddiskdrive -vmname WSTEST -path "d:\hyper-v\virtual hard disks\wstest.vhdx"

Вывод

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

NAKIVO Backup & Replication – это надежное и мощное решение для защиты данных, которое может помочь вам защитить среды VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows и Microsoft 365.

Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/