Упрощение разработки runbook service Management Automation с помощью глобальных ресурсов

Важно!

Поддержка этой версии service Management Automation (SMA) завершена. Рекомендуется выполнить обновление до SMA 2022.

Глобальные ресурсы доступны для всех модулей Runbook в среде автоматизации. Их можно создавать и настраивать либо в рабочей области автоматизации на портале управления, либо с помощью соответствующих командлетов в Windows PowerShell. В runbook можно получать и задавать значения для глобальных активов с помощью действий в модуле RunbookConstructs . Командлеты Windows PowerShell доступны для использования в модулях Runbook в Service Management Automation, но рекомендуется использовать эти действия, так как они более эффективны, так как они не должны работать через веб-службу автоматизации.

Получение или настройка учетных данных

Учетные данные автоматизации — это имена пользователей и пароли, которые можно использовать в командах Windows PowerShell или в сертификате, отправленном на сервер. Свойства учетных данных безопасно хранятся в базе данных службы автоматизации и могут быть доступны в модуле runbook с помощью действия Get-AutomationPSCredential или Get-AutomationCertificate .

PowerShell для управления учетными данными

Командлеты, приведенные в следующей таблице, можно использовать для создания учетных данных и управления ими с помощью Windows PowerShell в Service Management Automation.

Командлеты Описание
Get-SmaCertificate Извлекает сертификат службы автоматизации.
Get-SmaCredential Извлекает учетные данные PowerShell службы автоматизации.
Remove-SmaCertificate Удаляет сертификат службы автоматизации.
Remove-SmaCredential Удаляет учетные данные PowerShell службы автоматизации.
Set-SmaCertificate Создает новый сертификат или задает свойства для существующего сертификата, включая отправку файла сертификата и назначение пароля для PFX-файла.
Set-SmaCredential Создает новые учетные данные PowerShell службы автоматизации или задает свойства существующих учетных данных.

PowerShell для работы с учетными данными

Действия, приведенные в следующей таблице, можно использовать для доступа к учетным данным в runbook.

Действия Описание
Get-AutomationCertificate Получает сертификат для использования в модуле Runbook.
Get-AutomationPSCredential Получает имя пользователя и пароль для использования в модуле Runbook.

Примечание

Не следует использовать переменные в параметре Name командлетов Get-AutomationPSCredential и Get-AutomationCertificate , так как это может усложнить обнаружение зависимостей между модулями Runbook и переменными службы автоматизации.

Создание учетных данных PowerShell на портале управления

  1. Выберите рабочую область Автоматизация.

  2. В верхней части окна выберите Активы.

  3. В нижней части окна выберите Добавить параметр.

  4. Выберите Добавить учетные данные.

  5. В раскрывающемся списке Тип учетных данных выберите Учетные данные PowerShell.

  6. Введите имя учетных данных в поле Имя .

  7. Щелкните стрелку вправо.

  8. Введите значения для каждого свойства.

  9. Выберите метку проверка, чтобы сохранить учетные данные.

Создайте сертификат в

Портал управления

  1. Выберите рабочую область Автоматизация.

  2. В верхней части окна выберите Активы.

  3. В нижней части окна выберите Добавить параметр.

  4. Выберите Добавить учетные данные.

  5. В раскрывающемся списке Тип учетных данных выберите Сертификат.

  6. Введите имя сертификата в поле Имя .

  7. Щелкните стрелку вправо.

  8. Выберите Обзор для файла и перейдите к .cer или PFX-файлу.

  9. Если выбран PFX-файл, укажите для него пароль.

  10. Выберите метку проверка, чтобы сохранить сертификат.

Создание учетных данных с помощью PowerShell

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

$webServer = 'https://MyWebServer'
$port = 9090
$credName = 'MyCredential'
$user = 'contoso\MyUser'
$pwd = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user,$pwd

Set-SmaCredential -WebServiceEndpoint $webServer -port $port -Name $credName -Value $cred

Создание сертификата PowerShell с помощью Windows PowerShell в Service Management Automation

В приведенных ниже примерах команд показано, как создать сертификат путем импорта файла сертификата.

$webServer = 'https://MyWebServer'
$port = 9090
$certName = 'MyCertificate'
$path = 'c:\certs\MyCertificate.pfx'
$certPwd = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force

Set-SmaCertificate -WebServiceEndpoint $webServer -port $port -Name $certName -Path $certPath -Password $certPwd

Использование учетных данных PowerShell в runbook

Учетные данные PowerShell можно вернуть в модуль с помощью команды Get-AutomationPSCredential . Будет возвращен объект PSCredential, который можно использовать в рабочем процессе.

  • Команды в приведенном ниже примере демонстрируют использование учетных данных PowerShell в Runbook. В этом примере учетные данные используются с действием InlineScript для запуска набора команд с использованием альтернативных учетных данных.

    $myCredential = Get-AutomationPSCredential -Name 'MyCredential'
    InlineScript {
       <Commands>
    } -PSComputerName $ServerName -PSCredential $myCredential
    

Управление подключениями SMA

Подключение автоматизации содержит сведения, необходимые для подключения к серверу или к приложению из модуля runbook. Эта информация определяется в модуле для приложения и обычно включает такие сведения, как имя пользователя и пароль, а также компьютер для подключения. Также могут потребоваться другие сведения, например сертификат или идентификатор подписки. Свойства подключения безопасно хранятся в базе данных службы автоматизации и могут быть доступны в runbook с помощью действия Get-AutomationConnection .

Командлеты Windows PowerShell

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

Командлеты Описание
Get-SmaConnection Возвращает значения для каждого поля в определенном подключении.
Get-SmaConnectionField Возвращает определения полей для определенного типа подключения.
Get-SmaConnectionType Возвращает доступные типы подключений.
New-SmaConnection Создает новое подключение.
Remove-SmaConnection Удаляет существующее подключение.
Set-SmaConnectionFieldValue Задает значение определенного поля для существующего подключения.

Действия Runbook

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

Действия Описание
Get-AutomationConnection Получает подключение для использования в модуле Runbook.

Создание подключения на портале управления

  1. Выберите рабочую область Автоматизация.

  2. В верхней части окна выберите Активы.

  3. В нижней части окна выберите Добавить параметр.

  4. Щелкните Добавить подключение.

  5. В раскрывающемся списке Тип подключения выберите тип подключения.

  6. Введите имя подключения в поле Имя .

  7. Щелкните стрелку вправо.

  8. Введите значение для каждого свойства.

  9. Выберите метку проверка, чтобы сохранить подключение.

Создание подключения с помощью Windows PowerShell

В приведенных ниже примерах команд создается подключение Virtual Machine Manager с именем MyVMMConnection.

Примечание

Мы используем хэш-таблицу для определения свойств соединения. Это необходимо потому, что для разных типов подключения требуются разные наборы свойств. Для подключения другого типа будет использоваться другой набор значений полей.

Дополнительные сведения о хэш-таблицах см. здесь.

$webServer = 'https://MyWebServer'
$port = 9090
$connectionName = 'MyConnection'
$fieldValues = @{"Username"="MyUser";"Password"="password";"ComputerName"="MyComputer"}
New-SmaConnection -WebServiceEndpoint $webServer -port $port -Name $connectionName -ConnectionTypeName "VirtualMachineManager" -ConnectionFieldValues $fieldValues

Использование подключения в runbook

Используйте командлет Get-AutomationConnection для подключения в модуле Runbook. Это действие извлекает значения различных полей в соединении и возвращает их в виде хэш-таблицы, которую затем можно использовать с соответствующими командами в runbook.

Дополнительные сведения о хэш-таблицах см. здесь.

В следующем примере кода показано, как использовать подключение для предоставления имени компьютера и учетных данных для блока InlineScript , который запускает команды на другом компьютере.

$con = Get-AutomationConnection -Name 'MyConnection'
$securepassword = ConvertTo-SecureString -AsPlainText -String $con.Password -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $con.Username, $securepassword
InlineScript {
   <Commands>
} -PSComputerName $con.ComputerName -PSCredential $cred

Упрощение разработки runbook с помощью глобальных переменных

Переменные автоматизации — это значения, доступные для всех модулей Runbook. Их можно создавать, изменять и извлекать на портале управления, Windows PowerShell или из модуля Runbook. Переменные автоматизации полезны в следующих случаях:

  • Совместное использование значения несколькими модулями Runbook.

  • Совместное использование значения несколькими заданиями из одного модуля Runbook.

  • Управление значением на портале управления или из командной строки Windows PowerShell, которая используется модулями Runbook.

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

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

  • Строка

  • Целое число

  • Логическое

  • Datetime

При создании переменной можно указать, что она должна храниться в зашифрованном виде. Если переменная зашифрована, она безопасно хранится в базе данных SMA, и ее значение невозможно получить из командлета Get-SmaVariable . Единственный способ, которым можно вернуть зашифрованную переменную, — с помощью командлета Get-AutomationVariable в модуле Runbook. Вы можете сохранить несколько значений определенного типа в одной переменной, создав хэш-таблицу.

Командлеты Windows PowerShell

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

Командлеты Описание
Get-SmaVariable Получает значение существующей переменной.
Set-SmaVariable Создает новую переменную или задает значение для существующей переменной.

Действия Runbook

Вы можете получить доступ к переменным в runbook с помощью действий, приведенных в следующей таблице.

Действия Описание
Get-AutomationVariable Получает значение существующей переменной.
Set-AutomationVariable Получает значение существующей переменной.

Примечание

Не следует использовать переменные в параметре Name Get-AutomationVariable так как это может усложнить обнаружение зависимостей между модулями Runbook и переменными службы автоматизации.

Создание переменной на портале управления

  1. Выберите рабочую область Автоматизация.

  2. В верхней части окна выберите Активы.

  3. В нижней части окна выберите Добавить параметр.

  4. Выберите Добавить переменную.

  5. В раскрывающемся списке Тип выберите тип данных.

  6. Введите имя переменной в поле Имя .

  7. Щелкните стрелку вправо.

  8. Введите значение переменной и укажите, следует ли ее зашифровать.

  9. Выберите метку проверка, чтобы сохранить новую переменную.

Создание переменной с помощью Windows PowerShell

Командлет Set-SmaVariable создает новую переменную и задает значение для существующей переменной. В приведенных ниже примерах команд показано, как создать переменную строкового типа.

$web = 'https://MySMAServer'
$port = 9090

Set-SMAVariable -WebServiceEndpoint $web -Port $port -Name 'MyVariable' -Value 'My String'

Использование переменной в runbook

  • В следующем примере кода показано, как задать и вернуть переменную в модуле Runbook. В этом примере предполагается, что переменные типа integer с именами NumberOfIterations и NumberOfRunnings и переменная типа string с именем SampleMessage уже созданы.

    $NumberOfIterations = Get-AutomationVariable -Name 'NumberOfIterations'
    $NumberOfRunnings = Get-AutomationVariable -Name 'NumberOfRunnings'
    $SampleMessage = Get-AutomationVariable -Name 'SampleMessage'
    Write-Output "Runbook has been run $NumberOfRunnings times."
    for ($i = 1; $i -le $NumberOfIterations; $i++) {
       Write-Output "$i`: $SampleMessage"
    }
    Set-AutomationVariable -Name NumberOfRunnings -Value (NumberOfRunnings += 1)
    

Дальнейшие действия