Изменение шаблонов виртуальных машин вашей организации с помощью PowerShell

Опубликовано: 16 Апреля, 2023
Изменение шаблонов виртуальных машин вашей организации с помощью PowerShell

Одной из наиболее часто используемых функций System Center Virtual Machine Manager являются шаблоны виртуальных машин. Шаблоны позволяют автоматизировать процесс создания виртуальной машины. Пару месяцев назад, например, я готовился к записи обучающих видеокурсов и мне нужно было создать несколько десятков виртуальных машин. Используя шаблоны виртуальных машин, я смог быстро и легко создать все необходимые мне виртуальные машины.

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

Как насчет использования консоли диспетчера виртуальных машин?

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

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

Get-SCVMTemplate | Имя объекта выбора

Вы можете увидеть, как выглядит эта команда на скриншоте ниже.

Следующий шаг в этом процессе — выяснить, какой шаблон вы хотите изменить, а затем сопоставить этот шаблон с переменной. Есть несколько различных способов сделать это, но самый простой способ — установить переменную равной командлету Get-SCVMTemplate, а затем указать имя шаблона. Например, в моей собственной лаборатории есть шаблон с именем CentOS. Если бы я хотел сопоставить этот конкретный шаблон с переменной, я бы использовал следующую команду:

$Template = Get-SCVMTemplate CentOS

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

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

Шаблон, показанный на предыдущем снимке экрана, предназначен для создания виртуальных машин с одним виртуальным процессором и 1 гигабайтом памяти. Для демонстрации я собираюсь изменить шаблон, чтобы его можно было использовать для создания виртуальных машин с четырьмя виртуальными процессорами и 8 ГБ памяти.

Как отмечалось ранее, первым шагом при этом является определение имен атрибутов, которые необходимо изменить. Взглянув на предыдущий снимок экрана, вы увидите, что количество виртуальных ЦП связано с атрибутом с именем CPUCount, а выделение памяти шаблона связано с атрибутом с именем Memory (другие атрибуты будут использоваться, если шаблон предназначен для использования динамическая память). Я отобразил эти конкретные атрибуты немного более четко на снимке экрана ниже.

Изображение 14434
Одна из вещей, которые вы заметите на снимке экрана выше, заключается в том, что мне не нужно было использовать командлет Get-SCVMTemplate, потому что я уже сопоставил командлет с переменной. В этом случае я просто указал имя переменной, а затем использовал командлет Select-Object, чтобы сообщить PowerShell, какие атрибуты я хочу отобразить.

Как вы, наверное, уже заметили, командлет Get-SCVMTemplate используется для отображения информации о заданном шаблоне виртуальной машины. Однако этот командлет не может вносить изменения в шаблон. Для этого нужен другой командлет — Set-SCVMTemplate.

Использование командлета Set-SCVMTemplate

Существует ряд параметров, которые можно использовать с командлетом Set-SCVMTemplate, но в большинстве случаев вам потребуется указать только два параметра. К ним относятся имя шаблона, который вы хотите изменить, и имя атрибута, который вы хотите изменить. Однако в этом случае нет необходимости даже указывать имя шаблона, поскольку шаблон уже сопоставлен с переменной.

Итак, с учетом сказанного, давайте продолжим и изменим количество виртуальных ЦП в шаблоне. Как вы помните, шаблон сопоставляется с переменной с именем $Template, а число виртуальных ЦП привязано к атрибуту с именем CPUCount. Поэтому команда выглядит так:

Set-SCVMTemplate-Template $Template-CPUCount 4

Вы можете увидеть, как это выглядит на следующем изображении.

Изображение 14435
Процесс, используемый для изменения распределения памяти шаблона, почти идентичен. При этом используется следующая команда:

Set-SCVMTemplate-Template $Template-MemoryMB 8192

Обратите внимание, что хотя PowerShell указывает имя атрибута как «Память», я не смог сослаться на Память в команде. Это приводит к сообщению об ошибке, в котором говорится, что использование памяти неоднозначно. Вместо этого мне пришлось ссылаться на MemoryMB. Конечный результат вы можете увидеть на скриншоте ниже.
Изображение 14436

Шаблоны виртуальных машин: почему я использую PowerShell

Для простых модификаций шаблонов может быть проще просто использовать консоль VMM, чем копаться в PowerShell. Однако PowerShell, как правило, является гораздо более эффективным инструментом, если вам нужно изменить несколько шаблонов. Это особенно верно, учитывая, что PowerShell позволяет создавать отфильтрованный список шаблонов. Например, вы можете изменить выделение памяти для каждого шаблона, настроенного на использование 1 ГБ или меньше памяти.