Использование VMM для запуска сценариев для управления удаленными хостами Hyper-V

Опубликовано: 16 Апреля, 2023
Использование VMM для запуска сценариев для управления удаленными хостами Hyper-V

Когда дело доходит до массового управления хостами Hyper-V (или любым сервером Windows, если уж на то пошло), я всегда склонялся к использованию PowerShell. Тем не менее, использование PowerShell для управления набором хостов, как правило, требует больше кода, чем то, что требуется для действия по управлению, которое вы пытаетесь выполнить. Как правило, например, вам понадобится список серверов, которыми нужно управлять, и вам понадобится своего рода циклическая структура, которая выполняет задачу управления для каждого сервера в списке. Хотя этот метод использования PowerShell для управления удаленными хостами работает очень хорошо, есть способ немного упростить ситуацию. Если у вас есть System Center Virtual Machine Manager (VMM), вы можете использовать его консоль управления в качестве инструмента для запуска скрипта на одном или нескольких хостах без необходимости писать код для цикла по списку хостов. Между прочим, вы не ограничены работой исключительно с PowerShell. Вы также можете запускать сценарии из командной строки Windows. Давайте посмотрим, как это делается.

Чтобы начать работу, откройте консоль управления VMM, а затем выберите рабочую область «Виртуальные машины и службы». Затем разверните группу хостов и щелкните хост, которым вы хотите управлять. Когда вы это сделаете, вы увидите вкладку Host на панели инструментов в верхней части экрана. Как вы можете видеть на изображении ниже, эта панель инструментов содержит опцию для запуска команды сценария.

Изображение 14358
Нажав на «Выполнить команду сценария», вы попадете в диалоговое окно «Выполнить команду сценария», которое вы можете увидеть на изображении ниже.

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

Судя по документации, которую я нашел, кажется, что Microsoft намеревалась использовать это поле исключительно в среде командной строки Windows (CMD.EXE). Сценарии PowerShell можно запускать, но для этого вам придется пройти через пару обручей. Таким образом, мне нужно сначала познакомить вас с выполнением команд командной строки, а затем я покажу вам, как адаптировать процедуру для поддержки PowerShell.

Запуск команд командной строки Windows

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

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

Второй элемент, который необходимо иметь, — это /Q в поле «Параметры». Параметр /Q указывает Windows запустить среду командной строки в режиме «отключить эхо». Если вам интересно, echo off была старой командой DOS, которая скрывала определенный вывод от просмотра.

Третий обязательный элемент — переключатель /C, который также должен быть указан в поле «Параметры». Этот переключатель указывает окну командной строки запустить команду, а затем завершить ее. Если вы опустите этот переключатель, задание, связанное со сценарием, зависнет.

Четвертый обязательный элемент — это фактическая команда, которую вы хотите запустить в среде командной строки Windows. Пример, который Microsoft приводит в своей документации:

Net start sftlist

Если вам интересно, эта команда запускает службу sftlist. Вы можете увидеть, как выглядит полностью заполненное диалоговое окно «Выполнить команду сценария» на снимке экрана ниже:
Изображение 14360

Запуск скриптов PowerShell

Хотя в документации Microsoft ничего не говорится о запуске сценариев PowerShell через диалоговое окно Run Script Command, я нашел способ сделать это. Опять же, диалоговое окно придирчиво относится к синтаксису, который вы используете.

Как и раньше, вам нужно будет ввести cmd.exe в качестве имени исполняемой программы, и вам нужно будет включить /q и /c в начале поля «Параметры».

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

Наконец, вам нужно будет добавить параметр -File, за которым следует путь и имя файла скрипта, который вы хотите протестировать.

Когда я тестировал эту процедуру, я создал сценарий под названием copy.ps1, который просто копировал файл из одной папки в другую (чтобы я мог убедиться, что сценарий действительно выполняется). На изображении ниже показаны команды, которые я использовал для запуска скрипта.
Изображение 14361

Как узнать, сработал ли сценарий VMM?

Когда вы используете VMM для выполнения скрипта, вы не увидите видимую открытую среду сценариев на удаленном хост-сервере. Лучший способ узнать, успешно ли VMM запустил сценарий, — взглянуть на рабочую область Jobs. На изображении ниже показаны некоторые примеры некоторых успешных и неудачных заданий. Вы также заметите, что есть несколько отмененных заданий. Мне пришлось отменить эти конкретные задания, потому что отсутствие переключателей /Q и /C приводило к зависанию заданий. В любом случае, иногда может быть сложно придумать правильный синтаксис для запуска скрипта, и меню «Задания» может помочь вам усовершенствовать технику и проверить, выполнялся ли ваш скрипт VMM.