Поделиться через


Как запустить Runbook

 

Применимо к:Windows Azure Pack for Windows Server

Чтобы запустить модуль Runbook в Service Management Automation, можно воспользоваться одним из трех указанных ниже методов.

Первые два метода описаны ниже.Сведения о том, как вызвать модуль Runbook из другого модуля Runbook, см. в статье Запуск модуля Runbook из другого модуля Runbook.

Порядок запуска модуля Runbook на портале управления пакетами Microsoft Azure

  1. На портале управления на панели слева выберите Автоматизация.

  2. Перейдите на вкладку Модули Runbook.

  3. Выберите необходимый модуль Runbook и нажмите кнопку Запустить.

  4. Если у модуля Runbook есть параметры, вам будет предложено указать их.Для указания параметров с типами Boolean и datetime вместо стандартных текстовых полей используются специальные селекторы.Дополнительные сведения о параметрах модулей Runbook см. в статье Параметры модуля Runbook.

  5. Чтобы отобразить состояние задания, выберите пункт Отобразить задание рядом с сообщением Выполняется запуск Runbook или откройте вкладку Задания для модуля Runbook.

Порядок запуска модуля Runbook с помощью Windows PowerShell

Чтобы запустить модуль Runbook с помощью Windows PowerShell, воспользуйтесь командой Start-SmaRunbook.В примере кода ниже выполняется запуск модуля Runbook с именем Test-Runbook.

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
Start-SmaRunbook –WebServiceEndpoint $webServer –Port $port –Name $runbookName

Команда Start-SmaRunbook возвращает объект задания, который можно использовать для отслеживания его состояния после запуска модуля Runbook.Затем можно указать этот объект задания в команде Get SmaJob, чтобы определить состояние задания, и в команде Get SmaJobOutput, чтобы получить его выходные данные.В примере кода ниже выполняется запуск модуля Runbook с именем Test-Runbook, ожидание его завершения, а затем — отображение его выходных данных.

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"

$job = Start-SmaRunbook –WebServiceEndpoint $webServer –Port $port –Name $runbookName

$doLoop = $true
While ($doLoop) {
   $job = Get-SmaJob –WebServiceEndpoint $webServer –Port $port -Id $job.Id
   $status = $job.Status
   $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped") 
}

Get-SmaJobOutput –WebServiceEndpoint $webServer –Port $port -Id $job.Id –Stream Output

Если для модуля Runbook требуются параметры, то необходимо указать их в виде хэш-таблицы, в которой ключ хэш-таблицы совпадает с именем параметра, а ее значение — со значением параметра.В примере ниже показано, как запустить модуль Runbook с двумя строковыми параметрами FirstName и LastName, целочисленным параметром RepeatCount и логическим параметром Show.Дополнительные сведения о параметрах см. в разделе Параметры модуля Runbook ниже.

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"

$params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
Start-SmaRunbook –WebServiceEndpoint $webServer –Port $port –Name $runbookName –Parameters $params

Параметры модуля Runbook

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

При запуске модуля Runbook с помощью портала управления или Windows PowerShell, соответствующая команда отправляется через веб-службу автоматизации.Эта служба не поддерживает параметры со сложными типами данных.Если необходимо указать значение для сложного параметра, следует вызвать его из другого модуля Runbook, как описано в статье Запуск модуля Runbook из другого модуля Runbook.

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

Именованные значения

Если параметр имеет тип [object], то для отправки ему списка именованных значений можно использовать следующий формат JSON: {"Имя1":Значение1, "Имя2":Значение2, "Имя3":Значение3}.Эти значения должны иметь простые типы.Модуль Runbook получит параметр в виде объекта PSCustomObject со свойствами, соответствующими каждому именованному значению.

Рассмотрим указанный ниже тестовый модуль Runbook, который принимает параметр с именем user.

Workflow Test-Parameters
{
   param ( 
      [Parameter(Mandatory=$true)][object]$user
   )
    if ($user.Show) {
        foreach ($i in 1..$user.RepeatCount) {
            $user.FirstName
            $user.LastName
        }
    } 
}

Указанный ниже текст можно использовать для параметра user.

{"FirstName":"Joe","LastName":"Smith","RepeatCount":2,"Show":true}

В результате будут получены указанные ниже выходные данные.

Joe
Smith
Joe
Smith

Массивы

Если параметр представляет собой массив, например [array] или [string[]], то для отправки ему списка значений можно использовать следующий формат JSON: [Значение1,Значение2,Значение3].Эти значения должны иметь простые типы.

Рассмотрим указанный ниже тестовый модуль Runbook, который принимает параметр с именем user.

Workflow Test-Parameters
{
   param ( 
      [Parameter(Mandatory=$true)][array]$user
   )
    if ($user[3]) {
        foreach ($i in 1..$user[2]) {
            $ user[0]
            $ user[1]
        }
    } 
}

Указанный ниже текст можно использовать для параметра user.

["Joe","Smith",2,true]

В результате будут получены указанные ниже выходные данные.

Joe
Smith
Joe
Smith

Учетные данные

Если параметр имеет тип [PSCredential], то можно указать имя актива учетных данных Service Management Automation.Модуль Runbook извлечет актив учетных данных с указанным вами именем.

Рассмотрим указанный ниже тестовый модуль Runbook, который принимает параметр с именем credential.

Workflow Test-Parameters
{
   param ( 
      [Parameter(Mandatory=$true)][PSCredential]$credential
   )
   $credential.UserName
}

Указанный ниже текст можно использовать для параметра user при наличии актива учетных данных с именем MyCredential.

MyCredential

Если в учетных данных используется имя пользователя jsmith, то это приведет к отображению указанных выходных данных.

jsmith

См. также

Service Management Automation
Работа с Runbook (старая версия) [SMA]
Запуск модуля Runbook из другого модуля Runbook