Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы добавить runbook в Cлужба автоматизации Azure, можно либо создать новый, либо импортировать существующий из файла или из коллекции Runbook. В этой статье содержатся сведения об управлении модулями Runbook и рекомендуемыми шаблонами и рекомендациями по проектированию модуля Runbook. Все подробности о доступе к runbook'ам и модулям сообщества см. в разделе Коллекции runbook'ов и модулей для Cлужба автоматизации Azure.
Создать сборник инструкций
Создайте новый runbook в Cлужба автоматизации Azure с помощью портала Azure или PowerShell. После создания runbook его можно отредактировать, используя сведения из следующих документов:
- Изменить текстовый runbook в Cлужба автоматизации Azure
- Основные понятия рабочих процессов PowerShell для модулей Runbook службы автоматизации
- Управление пакетами Python 2 в службе автоматизации Azure
- Управление пакетами Python 3 (предварительная версия) в службе автоматизации Azure
Создание модуля Runbook на портале Azure
- Войдите на портал Azure.
- Найдите и выберите раздел Учетные записи службы автоматизации.
- На странице Учетные записи автоматизации выберите в списке нужную учетную запись службы автоматизации.
- В учетной записи службы автоматизации выберите Модули Runbook в разделе Автоматизация процессов, чтобы открыть список модулей runbook.
- Нажмите Создать сценарий.
- Присвойте новому модулю runbook имя.
- В раскрывающемся списке тип Runbook. Выберите тип. Имя runbook должно начинаться с буквы и может содержать буквы, цифры, символы подчеркивания и дефисы
- Выбор версии среды выполнения
- Введите применимое описание
- Щелкните Создать, чтобы создать сценарий выполнения.
Создание модуля Runbook с помощью PowerShell
Используйте командлет New-AzAutomationRunbook, чтобы создать пустую runbook. Используйте параметр Type, чтобы указать один из типов runbook, определенных для New-AzAutomationRunbook.
В следующем примере показано, как создать новый пустой сценарий runbook.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
Name = 'NewRunbook'
ResourceGroupName = 'MyResourceGroup'
Type = 'PowerShell'
}
New-AzAutomationRunbook @params
Импорт модуля Runbook
Вы можете импортировать скрипт PowerShell или рабочий процесс PowerShell (.ps1), графический runbook (.graphrunbook) либо скрипт Python 2 или Python 3 (.py) для создания собственного runbook. При этом необходимо указать тип модуля runbook, который создается в процессе импорта, с учетом следующих рекомендаций.
Вы можете импортировать файл .ps1, который не содержит рабочего процесса, либо в runbook PowerShell, либо в runbook рабочего процесса PowerShell. Если импортировать его в runbook рабочего процесса PowerShell, он будет преобразован в рабочий процесс. В этом случае в руководство по выполнению включены комментарии с описанием внесенных изменений.
В runbook PowerShell Workflow можно импортировать только файл .ps1, содержащий рабочий процесс PowerShell. Если файл содержит несколько рабочих процессов PowerShell, импорт завершится ошибкой. Каждый рабочий процесс необходимо сохранить в отдельный файл и импортировать отдельно.
Не импортируйте файл .ps1, который содержит рабочий процесс PowerShell, в runbook PowerShell, так как механизм выполнения сценариев PowerShell не может его распознать.
Импортируйте только файл .graphrunbook в новый графический модуль Runbook.
Импортируйте модуль Runbook из портала Azure
Для импорта файла сценария в службу автоматизации Azure можно использовать описанную ниже процедуру.
Примечание.
Файл .ps1 можно импортировать в модуль Runbook рабочего процесса PowerShell только с помощью портала.
- На портале Azure найдите и выберите раздел Учетные записи службы автоматизации.
- На странице Учетные записи автоматизации выберите в списке нужную учетную запись службы автоматизации.
- В учетной записи службы автоматизации выберите Модули Runbook в разделе Автоматизация процессов, чтобы открыть список модулей runbook.
- Щелкните Импортировать модуль Runbook. Вы можете выбрать один из следующих параметров:
- Найдите файл — выбирает файл на локальном компьютере.
- Выбрать из коллекции — можно просмотреть и выбрать существующий runbook из коллекции.
- Выберите файл .
- Если поле Имя активно, можно изменить имя runbook. Имя должно начинаться с буквы и может содержать буквы, цифры, символы подчеркивания и дефисы.
- Тип модуля runbook заполняется автоматически, но вы можете изменить его с учетом применимых ограничений.
- Версия среды выполнения либо заполняется автоматически, либо версию можно выбрать из раскрывающегося списка.
- Нажмите кнопку Импорт. Новый модуль runbook появится в списке модулей runbook для учетной записи службы автоматизации.
- Следует опубликовать модуль runbook, прежде чем вы сможете его запустить.
Примечание.
После импорта графической схемы Runbook ее можно преобразовать в другой тип. Однако графический сценарий нельзя преобразовать в текстовый сценарий.
Импорт модуля Runbook с помощью PowerShell
Чтобы импортировать файл скрипта как черновик runbook, воспользуйтесь командлетом Import-AzAutomationRunbook. Если runbook уже существует, импорт завершится ошибкой. Чтобы этого не произошло, используйте командлет с параметром Force.
В приведенном ниже примере показано, как импортировать файл сценария в runbook.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
Name = 'Sample_TestRunbook'
ResourceGroupName = 'MyResourceGroup'
Type = 'PowerShell'
Path = 'C:\Runbooks\Sample_TestRunbook.ps1'
}
Import-AzAutomationRunbook @params
Работа с ресурсами
Если ваш runbook создает resource, скрипт должен проверить, существует ли этот ресурс, прежде чем пытаться создать его. Ниже приведен простой пример.
$vmName = 'WindowsVM1'
$rgName = 'MyResourceGroup'
$myCred = Get-AutomationPSCredential 'MyCredential'
$vmExists = Get-AzResource -Name $vmName -ResourceGroupName $rgName
if (-not $vmExists) {
Write-Output "VM $vmName does not exist, creating"
New-AzVM -Name $vmName -ResourceGroupName $rgName -Credential $myCred
} else {
Write-Output "VM $vmName already exists, skipping"
}
Получение сведений из журнала действий
Вы можете получить сведения о runbook, например данные о пользователе, запустившем runbook, или учетной записи, которая для этого использовалась, из журнала действий учетной записи службы автоматизации. В следующем примере PowerShell показан последний пользователь, который запускал указанный runbook.
$rgName = 'MyResourceGroup'
$accountName = 'MyAutomationAccount'
$runbookName = 'MyRunbook'
$startTime = (Get-Date).AddDays(-1)
$params = @{
ResourceGroupName = $rgName
StartTime = $startTime
}
$JobActivityLogs = (Get-AzLog @params).Where( { $_.Authorization.Action -eq 'Microsoft.Automation/automationAccounts/jobs/write' })
$JobInfo = @{}
foreach ($log in $JobActivityLogs) {
# Get job resource
$JobResource = Get-AzResource -ResourceId $log.ResourceId
if ($null -eq $JobInfo[$log.SubmissionTimestamp] -and $JobResource.Properties.Runbook.Name -eq $runbookName) {
# Get runbook
$jobParams = @{
ResourceGroupName = $rgName
AutomationAccountName = $accountName
Id = $JobResource.Properties.JobId
}
$Runbook = Get-AzAutomationJob @jobParams | Where-Object RunbookName -EQ $runbookName
# Add job information to hashtable
$JobInfo.Add($log.SubmissionTimestamp, @($Runbook.RunbookName, $Log.Caller, $JobResource.Properties.jobId))
}
}
$JobInfo.GetEnumerator() | Sort-Object Key -Descending | Select-Object -First 1
Отслеживание хода выполнения
Рекомендуется разрабатывать сценарии runbook по модульному принципу, чтобы их логику можно было легко повторно использовать и перезапускать. Отслеживание хода выполнения в модуле runbook помогает убедиться, что его логика выполняется правильно при возникновении проблем.
Вы можете отслеживать ход выполнения сценария runbook с помощью внешнего источника, например учетной записи хранилища, базы данных или общих файлов. Создайте в runbook логику, чтобы сначала проверить состояние последнего выполненного действия. Затем на основе результатов проверки логика может либо пропустить, либо продолжить выполнение определённых задач в рунбуке.
Предотвращение выполнения одновременных заданий
Некоторые сценарии runbook ведут себя странно, если они одновременно выполняются в рамках нескольких заданий. В этом случае важно реализовать в сценарии runbook логику для определения, не выполняется ли уже задание. Ниже приведен простой пример.
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
# Check for already running or new runbooks
$runbookName = "runbookName"
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"
$jobs = Get-AzAutomationJob -ResourceGroupName $resourceGroupName -AutomationAccountName $automationAccountName -RunbookName $runbookName -DefaultProfile $AzureContext
# Ranking all the active jobs
$activeJobs = $jobs | where {$_.status -eq 'Running' -or $_.status -eq 'Queued' -or $_.status -eq 'New' -or $_.status -eq 'Activating' -or $_.status -eq 'Resuming'} | Sort-Object -Property CreationTime
$jobRanking = @()
$rank = 0
ForEach($activeJob in $activeJobs)
{
$rank = $rank + 1
$activeJob | Add-Member -MemberType NoteProperty -Name jobRanking -Value $rank -Force
$jobRanking += $activeJob
}
$AutomationJobId = $PSPrivateMetadata.JobId.Guid
$currentJob = $activeJobs | where {$_.JobId -eq $AutomationJobId}
$currentJobRank = $currentJob.jobRanking
# Only allow the Job with Rank = 1 to start processing.
If($currentJobRank -ne "1")
{
Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check failed as Current Job Ranking is not 1 but $($currentJobRank) therefore exiting..."
Exit
} Else
{
Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check passed. Start processing.."
}
Если вы хотите, чтобы модуль runbook выполнялся с управляемым удостоверением, назначаемым системой, оставьте код как есть. Если вы предпочитаете использовать управляемое удостоверение, назначаемое пользователем, сделайте следующее:
- Из строки 5 удалите
$AzureContext = (Connect-AzAccount -Identity).context, - Замените его на
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, и - Введите идентификатор клиента.
Примечание.
Для гибридных заданий PowerShell 7.2 внесите изменения в строку 28. Замените $PSPrivateMetadata.JobId.Guid на $env:PSPrivateMetaData.
Обработка временных ошибок в скрипте, зависящем от времени
Ваши сценарии runbook должны быть надежными и уметь обрабатывать ошибки, включая преходящие ошибки, из-за которых они могут перезапускаться или завершаться сбоем. Если runbook завершается сбоем, Cлужба автоматизации Azure повторно запускает его.
Если runbook обычно работает в условиях ограничения по времени, то для проверки времени выполнения скрипт должен реализовывать логику. Эта проверка гарантирует, что такие операции, как запуск, остановка или горизонтальное масштабирование, выполняются только в определённое время.
Примечание.
Локальное время в процессе Azure Sandbox установлено на UTC. Вычисления, связанные с датой и временем, в ваших модулях runbook должны учитывать этот факт.
Логика повторных попыток в сценарии для предотвращения временных отказов
Модули Runbook часто вызывают удаленные системы, такие как Azure через ARM, Azure Resource Graph, службы SQL и другие веб-службы. Если система, к которой обращаются модули Runbook, занята, временно недоступна или применяет ограничение частоты запросов при высокой нагрузке, при таких вызовах могут возникать ошибки времени выполнения. Чтобы создать устойчивость в модулях Runbook, необходимо реализовать логику повторных попыток при выполнении вызовов, чтобы модули Runbook могли обрабатывать временные проблемы без сбоя.
Дополнительные сведения см. в разделе Шаблон повторных попыток и в общих рекомендациях по REST и повторным попыткам.
Пример 1. Если модуль Runbook выполняет только один или два вызова
$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName $searchServiceName -ApiVersion 2015-08-19
$searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey
При вызове Invoke-AzureRmResourceAction могут возникнуть временные сбои. В таком сценарии рекомендуется реализовать следующий базовый шаблон для вызова командлета.
$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName $searchServiceName -ApiVersion 2015-08-19
# Adding in a retry
$Stoploop = $false
$Retrycount = 0
do {
try {
$searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey
write-verbose "Invoke-AzureRmResourceAction on $resource.ResourceId completed"
$Stoploop = $true
}
catch {
if ($Retrycount -gt 3)
{
Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId after 3 retrys."
$Stoploop = $true
}
else
{
Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId retrying in 30 seconds..."
Start-Sleep -Seconds 30
$Retrycount = $Retrycount + 1
}
}
}
While ($Stoploop -eq $false)
Примечание.
Повторная попытка вызова выполняется до трех раз с 30-секундной паузой между попытками.
Пример 2. Если модуль Runbook выполняет частые удаленные вызовы
Если модуль Runbook выполняет частые удаленные вызовы, это может вызвать временные проблемы со средой выполнения. Создайте функцию, которая реализует логику повторных попыток для каждого выполненного вызова, и передайте вызов в качестве блока скрипта для выполнения.
Function ResilientRemoteCall {
param(
$scriptblock
)
$Stoploop = $false
$Retrycount = 0
do {
try {
Invoke-Command -scriptblock $scriptblock
write-verbose "Invoked $scriptblock completed"
$Stoploop = $true
}
catch {
if ($Retrycount -gt 3)
{
Write-verbose "Invoked $scriptblock failed 3 times and we will not try again."
$Stoploop = $true
}
else
{
Write-verbose "Invoked $scriptblock failed retrying in 30 seconds..."
Start-Sleep -Seconds 30
$Retrycount = $Retrycount + 1
}
}
}
While ($Stoploop -eq $false)
}
Затем вы можете передать каждый удаленный вызов в функцию как
ResilientRemoteCall { Get-AzVm } или
ResilientRemoteCall { $searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey}
Использование нескольких подписок
Ваш runbook должен уметь работать с подписками. Например, для обработки нескольких подписок сценарий runbook использует командлет Disable-AzContextAutosave. Этот командлет гарантирует, что контекст аутентификации не будет получен из другого runbook, выполняющегося в той же песочнице.
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
-DefaultProfile $AzureContext
$childRunbookName = 'childRunbookDemo'
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"
$startParams = @{
ResourceGroupName = $resourceGroupName
AutomationAccountName = $automationAccountName
Name = $childRunbookName
DefaultProfile = $AzureContext
}
Start-AzAutomationRunbook @startParams
Если вы хотите, чтобы модуль runbook выполнялся с управляемым удостоверением, назначаемым системой, оставьте код как есть. Если вы предпочитаете использовать управляемое удостоверение, назначаемое пользователем, сделайте следующее:
- Из строки 5 удалите
$AzureContext = (Connect-AzAccount -Identity).context, - Замените его на
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, и - Введите идентификатор клиента.
Работа с пользовательскими скриптами
Примечание.
Обычно пользовательские скрипты и последовательности runbook нельзя запускать на узле с установленным агентом Log Analytics.
Чтобы использовать пользовательский скрипт, выполните следующие действия.
- Создайте учетную запись службы автоматизации.
- Разверните роль Hybrid Runbook Worker.
Тестирование модуля Runbook
При тестировании модуля Runbook запускается его черновая версия и завершаются все действия, которые он выполняет. Журнал заданий не создается, однако в области вывода теста отображаются поток вывода и поток предупреждений и ошибок. Сообщения, предназначенные для подробного потока, отображаются в области выходных данных, только если переменная VerbosePreference имеет значение Continue.
Несмотря на то, что выполняется черновая версия, модуль Runbook работает в обычном режиме и выполняет все действия с использованием ресурсов среды. В связи с этим тестировать модули Runbook можно только в непроизводственных ресурсах.
Примечание.
Все действия по выполнению runbook регистрируются в журнале действий учетной записи службы автоматизации под именем операции Создание задания Cлужба автоматизации Azure. Однако выполнение runbook в области тестирования, где выполняется черновая версия runbook, будет зарегистрировано в журнале действий с именем операции Запись черновика runbook в Cлужба автоматизации Azure. Выберите вкладку Operation и вкладку JSON, чтобы увидеть область действия, оканчивающуюся на ../runbooks/(имя runbook)/draft/testjob.
Процедура тестирования одинакова для всех типов runbook. Между текстовым и графическим редакторами на портале Azure нет никаких различий в тестировании.
- Откройте черновик сценария автоматизации в текстовом редакторе или графическом редакторе.
- Щелкните Тест, чтобы открыть страницу тестирования.
- Если у runbook имеются параметры, они отображаются в области слева, где можно указать значения для теста.
- Если вы хотите запустить тест на гибридном рабочем процессе Runbook, измените значение Параметры запуска на Гибридный рабочий процесс, затем выберите имя целевой группы. В противном случае оставьте значение Azure по умолчанию, чтобы тест выполнялся в облаке.
- Щелкните Пуск, чтобы начать тестирование.
- С помощью кнопок в области вывода можно остановить или приостановить последовательность runbook рабочего процесса PowerShell или графическую последовательность runbook в процессе тестирования. В случае приостановки модуль Runbook завершает действие, начатое до приостановки. Приостановленный модуль Runbook можно остановить или перезапустить.
- Проверьте выходные данные модуля runbook в области выходных данных.
Опубликовать руководство по эксплуатации
Перед запуском вновь созданного или импортированного модуля Runbook его необходимо опубликовать. У каждой последовательности runbook в службе автоматизации Azure есть черновая и опубликованная версия. Запустить можно только опубликованную версию, а изменить — только черновую. Изменения, внесенные в черновик, не влияют на опубликованную версию. Когда черновую версию нужно сделать доступной, вы публикуете её, перезаписывая текущую опубликованную версию черновой версией.
Опубликуйте runbook на портале Azure
- На портале Azure найдите и выберите раздел Учетные записи службы автоматизации.
- На странице Учетные записи автоматизации выберите в списке нужную учетную запись службы автоматизации.
- Откройте runbook в учетной записи службы автоматизации.
- Выберите Изменить.
- Нажмите кнопку "Опубликовать", а затем нажмите кнопку "Да" в ответ на сообщение проверки.
Опубликуйте runbook с помощью PowerShell
Используйте командлет Publish-AzAutomationRunbook, чтобы опубликовать свой runbook.
$accountName = "MyAutomationAccount"
$runbookName = "Sample_TestRunbook"
$rgName = "MyResourceGroup"
$publishParams = @{
AutomationAccountName = $accountName
ResourceGroupName = $rgName
Name = $runbookName
}
Publish-AzAutomationRunbook @publishParams
Создание расписания для runbook на портале Azure
После публикации сценария runbook можно запланировать его выполнение.
- На портале Azure найдите и выберите раздел Учетные записи службы автоматизации.
- На странице Учетные записи автоматизации выберите в списке нужную учетную запись службы автоматизации.
- Выберите модуль Runbook из списка модулей Runbook.
- В разделе Ресурсы выберите Расписания.
- Выберите Добавить расписание.
- В области Планирование модуля Runbook выберите Связать расписание с вашим модулем Runbook.
- В области Расписание выберите Создать новое расписание.
- Введите имя, описание и другие параметры в области Новое расписание.
- После создания расписания выделите его и нажмите кнопку ОК. Теперь это должно быть связано с вашим сценарием.
- Проверьте почтовый ящик: вы должны получить письмо с уведомлением о статусе runbook.
Восстановление удаленного модуля Runbook
Удаленный модуль Runbook можно восстановить с помощью скриптов PowerShell. Чтобы восстановить модуль Runbook, убедитесь, что выполнены следующие условия:
- Модули Runbook, которые будут восстановлены, были удалены за последние 29 дней.
- Учетная запись службы автоматизации для этого модуля Runbook существует.
- Разрешение роли Automation Contributor предоставляется управляемому удостоверению, назначенному системой, для учетной записи Automation.
Сценарий PowerShell
- Выполните скрипт PowerShell в качестве задания в учетной записи службы автоматизации для восстановления удаленных модулей Runbook.
- Скачайте сценарий PowerShell из GitHub. Кроме того, можно импортировать сценарий PowerShell под названием Restore Automation runbook из коллекции Runbook Gallery. Укажите имя модуля Runbook, который необходимо восстановить и запустить как задание в служба автоматизации Azure для восстановления удаленных модулей Runbook.
- Скачайте скрипт с GitHub или импортируйте скрипт PowerShell с именем List Deleted Automation Runbook из галереи Runbook, чтобы определить имена runbook'ов, которые были удалены за последние 29 дней.
Получение данных о состоянии заданий
Просмотр состояний на портале Azure
Подробные сведения об обработке заданий в службе автоматизации Azure приведены в разделе Задания. Когда вы будете готовы просмотреть задания runbook, воспользуйтесь порталом Azure и войдите в учетную запись службы автоматизации. Справа вы можете увидеть сводку по всем заданиям runbook в Job Statistics.
В сводке отображается количество и графическое представление состояний всех выполненных заданий.
Щелкните плитку, чтобы открылась страница "Задания", на которой представлен сводный список всех выполненных заданий. На этой странице отображаются сведения о состоянии, имени runbook, времени запуска и времени выполнения каждого задания.
Список заданий можно отфильтровать, выбрав Фильтровать задания. Задайте фильтр по конкретному сценарию runbook, состоянию задания или значению из раскрывающегося списка, а также укажите временной диапазон для поиска.
В качестве альтернативы можно просмотреть сводные сведения о задании для определенного модуля runbook, выбрав этот модуль на странице «Модули Runbook» в своей учетной записи Automation, а затем выбрав Задания. При выполнении этого действия отображается страница "Задания". Здесь можно нажать на запись задания, чтобы просмотреть ее сведения и результаты.
Получение данных о состоянии заданий с помощью PowerShell
Чтобы получить задания, созданные для рунбука, и сведения о конкретном задании, используйте командлет Get-AzAutomationJob. Если вы запускаете последовательность runbook с помощью Start-AzAutomationRunbook, возвращается результирующее задание. Для получения выходных данных задания используйте командлет Get-AzAutomationJobOutput.
В приведенном ниже примере извлекаются сведения о последнем задании для примера runbook и отображаются данные о его состоянии, значения, заданные для параметров runbook, а также выходные данные этого задания.
$getJobParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Runbookname = 'Test-Runbook'
}
$job = (Get-AzAutomationJob @getJobParams | Sort-Object LastModifiedDate -Desc)[0]
$job | Select-Object JobId, Status, JobParameters
$getOutputParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Id = $job.JobId
Stream = 'Output'
}
Get-AzAutomationJobOutput @getOutputParams
В следующем примере извлекаются выходные данные для конкретного задания и возвращается каждая запись. Если для одной из записей возникает исключение, скрипт записывает его вместо значения. Это полезно, так как исключения могут предоставлять дополнительные сведения, которые обычно не удается записать в журнал во время вывода.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Stream = 'Any'
}
$output = Get-AzAutomationJobOutput @params
foreach ($item in $output) {
$jobOutParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Id = $item.StreamRecordId
}
$fullRecord = Get-AzAutomationJobOutputRecord @jobOutParams
if ($fullRecord.Type -eq 'Error') {
$fullRecord.Value.Exception
} else {
$fullRecord.Value
}
}
Следующие шаги
- Примеры запросов см. в разделе "Примеры запросов" для журналов заданий и потоков заданий
- Дополнительные сведения об управлении runbook см. в статье Выполнение runbook в Cлужба автоматизации Azure.
- Сведения о поддержке версий среды выполнения и выходе на пенсию при управлении модулями Runbook см. в статье "Поддержка языковой среды выполнения" и политика выхода на пенсию для Cлужба автоматизации Azure.
- Чтобы подготовить модуль Runbook PowerShell, см. статью Изменение текстовых модулей Runbook в Cлужба автоматизации Azure.
- Сведения по устранению неполадок, связанных с выполнением runbook, см. в статье Устранение неполадок runbook.