Телефон +7 (812) 718-6184
СПб, Московский пр. 118

PowerShell для Hyper-V

30.01.2015

Во многих компаниях виртуализация прочно закрепилась в ИТ-структуре. Как средство оптимизации использования вычислительных мощностей, а именно максимальной загрузки имеющихся физических серверов, виртуализация широко распространилась в среде крупного и среднего бизнеса.
Одной из самых доступных платформ виртуализации на сегодняшний день является платформа Microsoft Hyper-V. Сейчас уже используется третья версия системы виртуализации, которая может быть развернута как в бесплатной редакции - Hyper-V Server 2012 R2, так и в рамках платных редакций - Windows Server 2012 R2 Standard/Datacenter.
В случае использования Hyper-V Server 2012 R2 необходимо отдельно лицензировать только операционные системы и программное обеспечение на самих виртуальных машинах (за исключением бесплатно распространяемых операционных систем и программного обеспечения). При этом в случае покупки Standard или Datacenter редакции Windows Server 2012 R2 необходимость и в этом частично или полностью отпадает (по отношению лицензирования серверных платформ Windows).
Для управления Hyper-V можно использовать графическую консоль управления Hyper-V Manager, которую, в случае использования Core режима установки Windows Server 2012 R2, можно запускать на рабочей станции под управлением Windows 8.1
Это, безусловно, удобное решение для компаний среднего сегмента рынка с простой ИТ-инфраструктурой, но, когда появляются требования отказоустойчивости и высокой доступности, то есть в инфраструктуре организуются кластеры и появляется большое количество серверов виртуализации, на которых нужно оперативно запустить большое количество однотипных виртуальных машин, например, из заранее приготовленного шаблона,  стандартную оснастку Hyper-V Manager использовать становится неудобно. 
Неудобно не потому что разработчики создали недружелюбный интерфейс, а потому как выполнять однотипные простые действия становится скучно и утомительно, так как процесс создания новых или импорта существующих виртуальных машин превращается в рутину. Можно, безусловно, воспользоваться таким продуктом как System Center Virtual Machine Manager 2012 R2, который в первую очередь и предназначен для управления большим количеством как отдельных серверов виртуализации, так и кластерами. Но данный продукт потребует дополнительных затрат на покупку System Center 2012 R2, в состав которого и входит VMM.
Для того чтобы отказаться от этой рутины, высвободить ресурсы и повысить эффективность работы ИТ и при этом обойтись без дополнительных затрат в Windows Server 2012 R2 встроен модуль Hyper-V для PowerShell.
Для многих, в том числе и опытных администраторов, автоматизация типовых процедур через PowerShell становится непростой задачей, а создание виртуальных машин без графической оболочки может вообще привести в ступор. Но это только на первый взгляд кажется сложным.
С помощью краеугольного командлета PowerShell под названием Get-Help (рисунок 1) можно получить абсолютно всю необходимую информацию для автоматизации своей насущной задачи.

Рисунок 1- Справка в PowerShell

Внутри справки можно увидеть полный набор параметров, который использует командлет, а также посмотреть наборы примеров,  помогающие разобраться в синтаксисе командлета и определиться с последовательностью ввода.
Справка PowerShell может быть выведена сжато либо подробно. Основная часть справочной информации размещена в сети на серверах компании Microsoft и при желании может быть скачена оттуда, если к командлету Get-Help добавить параметр –Online, но также можно воспользоваться локальной справкой, содержащей основные сведения по наиболее популярным командлетам, но с ограниченным количеством примеров.
Что нужно знать о виртуальной машине, чтобы создать новый экземпляр в системе? Имя (идентификатор), месторасположение файлов, размер выделенной оперативной памяти, подключение к сети и месторасположение виртуального жёсткого диска. Как это задать в PowerShell? Довольно просто! На рисунке 2 приведены параметры командлета New-Vm.

Рисунок 2- Создание виртуальной машины

В Hyper-V 3, появившемся вместе с Windows Server 2012 R2, появляется дополнительный параметр Generation (Поколение), который определяет функциональность виртуальной машины. Если виртуальные машины Поколения 1 загружались с использованием программной BIOS , подключали диски через IDE-контроллер и использовали устаревший сетевой адаптер, то машины нового Поколения 2 работают с UEFI, позволяя реализовать  безопасную загрузку, подключают VHDX диски через SCSI-контроллер, не поддерживая теперь IDE и VHD, но позволяя к работающей виртуальной машине смонтировать новый DVD-привод; также виртуальные машины нового поколения поддерживают новую версию программного сетевого адаптера, позволяющего реализовать  загрузку PXE.
Новое поколение виртуальных машин позволяет серьёзно ускорить загрузку гостевой операционной системы и расширить возможности управления в виртуальной среде, но, к сожалению, не все операционные системы могут загрузиться на виртуальных машинах Поколения 2 а только 64-разрядные версии Windows 8 и Windows 8.1, а также Windows Server 2012 иWindows Server 2012 R2. Windows 7 и Windows Server 2008 R2 смогут работать только на машинах Поколения 1. Дело в том, что новые виртуальные машины не используют программируемый контроллер прерываний (PIC), который необходим для предыдущих поколений операционных систем.
Конечно же созданием разных виртуальных машин возможности PowerShell не ограничиваются. Среди 178 командлетов модуля Hyper-V в PowerShell (рисунок 3) можно найти команды для добавления дисков, сетевых адаптеров, коммутаторов, контроллеров и других полезных для виртуальных машин объектов, также можно делать снапшоты виртуальных машин, менять сетевые интерфейсы, удалять и импортировать наборы виртуальных машин различных поколений.

Рисунок 3 - Часть командлетов модуля Hyper-V

PowerShell с модулем Hyper-V может стать верным помощником и незаменимым инструментом для администрирования виртуальной среды, ускоряя процессы управления и повышая эффективность работы ИТ, а подробнее о возможностях Hyper-V v3.0 и применения PowerShell в виртуальной среде Hyper-V можно узнать на курсе 20409: Виртуализация серверов с Windows Server Hyper-V и System Center в УЦ «Эврика»