Správa runbooků ve službě Azure Automation

Runbook můžete do služby Azure Automation přidat buď vytvořením nového, nebo importem existujícího ze souboru nebo galerie runbooků. Tento článek obsahuje informace o správě runbooku a doporučených vzorů a osvědčených postupů s návrhem sady Runbook. Všechny podrobnosti o přístupu ke komunitním runbookům a modulům najdete v galeriích runbooků a modulů pro Azure Automation.

Vytvoření runbooku

Vytvořte nový runbook ve službě Azure Automation pomocí webu Azure Portal nebo PowerShellu. Po vytvoření runbooku ho můžete upravit pomocí informací v:

Vytvoření runbooku na webu Azure Portal

  1. Přihlaste se k portálu Azure.
  2. Vyhledejte a vyberte možnost Účty služby Automation.
  3. Na stránce Účty Automation vyberte ze seznamu svůj účet Automation.
  4. V účtu Automation vyberte runbooky v části Automatizace procesů a otevřete seznam runbooků.
  5. Klikněte na Vytvořit runbook.
    1. Pojmenujte runbook.
    2. Z rozevírací nabídky Typ runbooku. Vyberte jeho typ. Název runbooku musí začínat písmenem a může obsahovat písmena, číslice, podtržítka a pomlčky.
    3. Vyberte verzi modulu runtime.
    4. Zadejte příslušný popis.
  6. Kliknutím na Vytvořit runbook vytvořte.

Vytvoření runbooku pomocí PowerShellu

K vytvoření prázdného runbooku použijte rutinu New-AzAutomationRunbook . Pomocí parametru Type zadejte jeden z typů runbooků definovaných pro New-AzAutomationRunbook.

Následující příklad ukazuje, jak vytvořit nový prázdný runbook.

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    Name                  = 'NewRunbook'
    ResourceGroupName     = 'MyResourceGroup'
    Type                  = 'PowerShell'
}
New-AzAutomationRunbook @params

Import runbooku

Můžete importovat skript powershellu nebo pracovního postupu PowerShellu (.ps1), grafického runbooku (.graphrunbook) nebo skriptu Pythonu 2 nebo Pythonu 3 (.py), abyste mohli vytvořit vlastní runbook. Zadáte typ runbooku, který se vytvoří během importu, a to s ohledem na následující aspekty.

  • Soubor .ps1, který neobsahuje pracovní postup, můžete importovat do runbooku PowerShellu nebo runbooku pracovního postupu PowerShellu. Pokud ho naimportujete do runbooku pracovního postupu PowerShellu, převede se na pracovní postup. V tomto případě jsou komentáře zahrnuté do runbooku, které popisují provedené změny.

  • Do runbooku pracovního postupu PowerShellu můžete importovat pouze soubor .ps1, který obsahuje pracovní postup PowerShellu. Pokud soubor obsahuje více pracovních postupů PowerShellu, import selže. Každý pracovní postup musíte uložit do vlastního souboru a importovat každý samostatně.

  • Neimportujte soubor .ps1 obsahující pracovní postup PowerShellu do runbooku PowerShellu, protože modul skriptů PowerShellu ho nedokáže rozpoznat.

  • Importujte pouze soubor .graphrunbook do nového grafického runbooku.

Import runbooku z webu Azure Portal

K importu souboru skriptu do Služby Azure Automation můžete použít následující postup.

Poznámka:

Soubor .ps1 můžete importovat pouze do runbooku pracovního postupu PowerShellu pomocí portálu.

  1. Na webu Azure Portal vyhledejte a vyberte Účty Automation.
  2. Na stránce Účty Automation vyberte ze seznamu svůj účet Automation.
  3. V účtu Automation vyberte runbooky v části Automatizace procesů a otevřete seznam runbooků.
  4. Klikněte na Importovat runbook. Můžete vybrat jednu z následujících možností:
    1. Vyhledejte soubor – vybere soubor z místního počítače.
    2. Procházet z galerie – Můžete procházet a vybrat existující runbook z galerie.
  5. Vyberte soubor.
  6. Pokud je pole Název povolené, máte možnost změnit název runbooku. Název musí začínat písmenem a může obsahovat písmena, číslice, podtržítka a pomlčky.
  7. Typ runbooku se vyplní automaticky, ale po zohlednění příslušných omezení můžete typ změnit.
  8. Verze modulu runtime je buď automaticky vyplněná, nebo vyberte verzi z rozevíracího seznamu.
  9. Klepněte na tlačítko Import. Nový runbook se zobrazí v seznamu runbooků pro účet automatizace.
  10. Před spuštěním runbooku jej musíte publikovat.

Poznámka:

Po importu grafického runbooku ho můžete převést na jiný typ. Grafický runbook ale nemůžete převést na textový runbook.

Import runbooku pomocí PowerShellu

Pomocí rutiny Import-AzAutomationRunbook naimportujte soubor skriptu jako koncept runbooku. Pokud runbook již existuje, import selže, pokud s rutinou nepoužijete Force parametr.

Následující příklad ukazuje, jak importovat soubor skriptu do runbooku.

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    Name                  = 'Sample_TestRunbook'
    ResourceGroupName     = 'MyResourceGroup'
    Type                  = 'PowerShell'
    Path                  = 'C:\Runbooks\Sample_TestRunbook.ps1'
}
Import-AzAutomationRunbook @params

Zpracování prostředků

Pokud runbook vytvoří prostředek, skript by měl před pokusem o jeho vytvoření zkontrolovat, jestli prostředek již existuje. Tady je základní příklad.

$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"
}

Načtení podrobností z protokolu aktivit

Podrobnosti o runbooku, jako je osoba nebo účet, který runbook spustil, můžete načíst z protokolu aktivit pro účet Automation. Následující příklad PowerShellu poskytuje posledního uživatele ke spuštění zadaného runbooku.

$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

Sledování průběhu

Je vhodné vytvořit runbooky tak, aby byly modulární v přírodě, a logika, která se dá snadno znovu použít a restartovat. Sledování průběhu v runbooku zajišťuje správné spuštění logiky runbooku, pokud dojde k problémům.

Průběh runbooku můžete sledovat pomocí externího zdroje, například účtu úložiště, databáze nebo sdílených souborů. Vytvořte v runbooku logiku, která nejprve zkontroluje stav poslední akce. Logika pak může na základě výsledků kontroly přeskočit nebo pokračovat v konkrétních úlohách v runbooku.

Prevence souběžných úloh

Některé runbooky se chovají podivně, pokud běží na více úlohách najednou. V tomto případě je důležité, aby runbook implementovali logiku, aby určila, jestli už je spuštěná úloha. Tady je základní příklad.

# 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.." 
} 

Pokud chcete, aby runbook běžel se spravovanou identitou přiřazenou systémem, nechejte kód tak, jak je. Pokud chcete použít spravovanou identitu přiřazenou uživatelem, pak:

  1. Z řádku 5 odeberte $AzureContext = (Connect-AzAccount -Identity).context,
  2. Nahraďte ho a $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
  3. Zadejte ID klienta.

Poznámka:

V případě hybridních úloh PowerShellu 7.2 proveďte změny na řádku 28. Nahraďte $PSPrivateMetadata.JobId.Guid$env:PSPrivateMetaData.

Zpracování přechodných chyb ve skriptu závislém na čase

Vaše runbooky musí být robustní a schopné zpracovávat chyby, včetně přechodných chyb, které můžou způsobit restartování nebo selhání. Pokud runbook selže, Azure Automation ho opakuje.

Pokud runbook obvykle běží v časovém omezení, musí skript implementovat logiku pro kontrolu doby provádění. Tato kontrola zajišťuje spouštění operací, jako je spuštění, vypnutí nebo horizontální navýšení kapacity, pouze během určitých časů.

Poznámka:

Místní čas v procesu sandboxu Azure je nastavený na UTC. Výpočty data a času v runboocích musí vzít v úvahu tento fakt.

Přidání logiky opakování do runbooku za účelem zabránění přechodným selháním

Runbooky často volaly vzdálené systémy, jako je Azure, prostřednictvím ARM, Azure Resource Graphu, služeb SQL a dalších webových služeb. Pokud je systém, který runbooky volají, zaneprázdněn, dočasný nedostupný nebo implementující omezování zatížení, jsou volání ohrožena chybami za běhu. Pokud chcete v runbookech vytvořit odolnost proti chybám, musíte při volání implementovat logiku opakování, aby runbooky mohly zpracovat přechodný problém bez selhání.

Další informace najdete v tématu Vzor opakování a Obecné rest a pokyny pro opakování.

Příklad 1: Pokud runbook provádí pouze jedno nebo dvě volání

$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

Při volání Invoke-AzureRmResourceActionmůžete pozorovat přechodné selhání. V takovém scénáři doporučujeme implementovat následující základní vzor kolem volání rutiny.

$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)

Poznámka:

Pokus o opakování hovoru je až třikrát a pokaždé spí po dobu 30 sekund.

Příklad 2: Pokud runbook provádí časté vzdálené volání

Pokud runbook provádí časté vzdálené volání, může docházet k přechodným problémům s modulem runtime. Vytvořte funkci, která implementuje logiku opakování pro každé volání, které se provede, a předejte volání, které má být provedeno jako blok skriptu ke spuštění.

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)
}

Pak můžete každé vzdálené volání předat do funkce jako

ResilientRemoteCall { Get-AzVm }
nebo

ResilientRemoteCall { $searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey}

Práce s několika předplatnými

Runbook musí být schopný pracovat s předplatnými. Například ke zpracování více předplatných používá runbook rutinu Disable-AzContextAutosave . Tato rutina zajišťuje, že kontext ověřování se nečte z jiného runbooku spuštěného ve stejném sandboxu.

# 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

Pokud chcete, aby runbook běžel se spravovanou identitou přiřazenou systémem, nechejte kód tak, jak je. Pokud chcete použít spravovanou identitu přiřazenou uživatelem, pak:

  1. Z řádku 5 odeberte $AzureContext = (Connect-AzAccount -Identity).context,
  2. Nahraďte ho a $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
  3. Zadejte ID klienta.

Práce s vlastním skriptem

Poznámka:

Na hostiteli nemůžete normálně spouštět vlastní skripty a runbooky s nainstalovaným agentem Log Analytics.

Použití vlastního skriptu:

  1. Vytvoření účtu Automation
  2. Nasaďte roli Hybrid Runbook Worker.
  3. Pokud jste na počítači s Linuxem, potřebujete zvýšená oprávnění. Přihlaste se a vypněte kontroly podpisu.

Testování runbooku

Při testování runbooku se spustí verze konceptu a všechny akce, které provede, se dokončí. Nevytvoří se žádná historie úloh, ale výstup a upozornění a datové proudy chyb se zobrazí v podokně výstupu testu. Zprávy do podrobného datového proudu se zobrazí v podokně Výstup pouze v případě, že je proměnná VerbosePreference nastavena na Continuehodnotu .

I když se spouští verze Konceptu, runbook se pořád spouští normálně a provádí všechny akce s prostředky v prostředí. Z tohoto důvodu byste měli testovat pouze runbooky na neprodukčních prostředcích.

Poznámka:

Všechny akce spuštění runbooku se protokolují v protokolu aktivit účtu Automation s názvem operace Vytvoření úlohy Azure Automation. Spuštění runbooku v testovacím podokně, kde se spustí koncept runbooku, by se však protokolovalo v protokolech aktivit s názvem operace Zápis konceptu runbooku Azure Automation. Vyberte kartu Operace a JSON a zobrazte obor končící na .. /runbooks/(název runbooku)/draft/testjob.

Postup testování jednotlivých typů runbooků je stejný. Při testování není mezi textovým a grafickým editorem na webu Azure Portal žádný rozdíl.

  1. Otevřete verzi konceptu runbooku v textovém editoru nebo v grafickém editoru.
  2. Kliknutím na test otevřete stránku Test .
  3. Pokud runbook obsahuje parametry, jsou uvedené v levém podokně, kde můžete zadat hodnoty, které se mají pro příslušný test použít.
  4. Pokud chcete spustit test na funkci Hybrid Runbook Worker, změňte možnost Spustit Nastavení na Hybrid Worker a vyberte název cílové skupiny. V opačném případě ponechte výchozí Azure pro spuštění testu v cloudu.
  5. Kliknutím na Tlačítko Start zahájíte test.
  6. Pomocí tlačítek v podokně Výstup můžete během testování zastavit nebo pozastavit pracovní postup PowerShellu nebo grafický runbook. Když Runbook pozastavíte, dokončí aktuální aktivitu a teprve pak se pozastaví. Po pozastavení runbooku ho můžete zastavit nebo restartovat.
  7. Zkontrolujte výstup z runbooku v podokně Výstup .

Publikování runbooku

Když vytvoříte nebo naimportujete nový runbook, musíte ho před spuštěním publikovat. Každý runbook ve službě Azure Automation má verzi Konceptu a publikovanou verzi. Ke spuštění je dostupná pouze publikovaná verze a lze ji upravovat pouze v režimu konceptu. Na publikovanou verzi nemá vliv žádné změny verze konceptu. Až bude verze Konceptu dostupná, publikujete ji a přepíšete aktuální publikovanou verzi pomocí verze Konceptu.

Publikování runbooku na webu Azure Portal

  1. Na webu Azure Portal vyhledejte a vyberte Účty Automation.
  2. Na stránce Účty Automation vyberte ze seznamu svůj účet Automation.
  3. Otevřete runbook ve svém účtu Automation.
  4. Klikněte na možnost Upravit.
  5. Klepněte na tlačítko Publikovat a potom v odpovědi na ověřovací zprávu vyberte Ano .

Publikování runbooku pomocí PowerShellu

K publikování runbooku použijte rutinu Publish-AzAutomationRunbook .

$accountName = "MyAutomationAccount"
$runbookName = "Sample_TestRunbook"
$rgName = "MyResourceGroup"

$publishParams = @{
    AutomationAccountName = $accountName
    ResourceGroupName     = $rgName
    Name                  = $runbookName
}
Publish-AzAutomationRunbook @publishParams

Naplánování runbooku na webu Azure Portal

Po publikování runbooku ji můžete naplánovat pro operaci:

  1. Na webu Azure Portal vyhledejte a vyberte Účty Automation.
  2. Na stránce Účty Automation vyberte ze seznamu svůj účet Automation.
  3. Ze seznamu runbooků vyberte runbook.
  4. V části Zdroje vyberte Plány.
  5. Vyberte Přidat plán.
  6. V podokně Naplánovat runbook vyberte Propojit plán s runbookem.
  7. V podokně Plán zvolte Vytvořit nový plán.
  8. Do podokna Nový plán zadejte název, popis a další parametry.
  9. Po vytvoření plánu ho zvýrazněte a klikněte na OK. Teď by se měl propojit s runbookem.
  10. Vyhledejte e-mail ve vaší poštovní schránce, který vás upozorní na stav runbooku.

Obnovení odstraněného runbooku

Odstraněný runbook můžete obnovit pomocí skriptů PowerShellu. Pokud chcete runbook obnovit, ujistěte se, že jsou splněny následující podmínky:

  • Runbooky, které se mají obnovit, se odstranily za posledních 29 dnů.
  • Účet Automation pro tento runbook existuje.
  • Oprávnění role Přispěvatel služby Automation je uděleno spravované identitě přiřazené systémem účtu Automation.

Skript PowerShellu

  • Spusťte skript PowerShellu jako úlohu ve vašem účtu Automation a obnovte odstraněné runbooky.
  • Stáhněte si skript PowerShellu z GitHubu. Případně můžete importovat skript PowerShellu s názvem Restore Automation Runbook z galerie runbooků. Zadejte název runbooku, který se má obnovit, a spusťte ho jako úlohu ve službě Azure Automation pro obnovení odstraněných runbooků.
  • Stáhněte si skript z GitHubu nebo importujte skript PowerShellu s názvem List Deleted Automation Runbook z Galerie runbooků, abyste identifikovali názvy runbooků, které byly odstraněny za posledních 29 dnů.

Získání stavů úloh

Zobrazení stavů na webu Azure Portal

Podrobnosti o zpracování úloh ve službě Azure Automation najdete v části Úlohy. Až budete připraveni zobrazit úlohy runbooku, použijte Azure Portal a získejte přístup k účtu Automation. Napravo můžete zobrazit souhrn všech úloh runbooku ve statistikách úloh.

Job Statistics tile

Souhrn zobrazuje počet a grafické znázornění stavu úlohy pro každou spuštěnou úlohu.

Kliknutím na dlaždici zobrazíte stránku Úlohy, která obsahuje souhrnný seznam všech spuštěných úloh. Tato stránka zobrazuje stav, název runbooku, čas spuštění a čas dokončení pro každou úlohu.

Screenshot of the Jobs page.

Seznam úloh můžete filtrovat výběrem možnosti Filtrovat úlohy. Vyfiltrujte konkrétní runbook, stav úlohy nebo volbu z rozevíracího seznamu a zadejte časový rozsah hledání.

Filter job status

Případně můžete zobrazit souhrnné podrobnosti úlohy pro konkrétní runbook tak, že ho vyberete na stránce Runbooky ve vašem účtu Automation a pak vyberete Úlohy. Tato akce zobrazí stránku Úlohy. Odtud můžete kliknout na záznam úlohy a zobrazit jeho podrobnosti a výstup.

Screenshot of the Jobs page with the Errors button highlighted.

Načtení stavů úloh pomocí PowerShellu

Pomocí rutiny Get-AzAutomationJob načtěte úlohy vytvořené pro runbook a podrobnosti konkrétní úlohy. Pokud runbook spustíte pomocí Start-AzAutomationRunbook, vrátí výslednou úlohu. K načtení výstupu úlohy použijte Rutinu Get-AzAutomationJobOutput .

Následující příklad získá poslední úlohu ukázkového runbooku a zobrazí její stav, hodnoty zadané pro parametry runbooku a výstup úlohy.

$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

Následující příklad načte výstup pro určitou úlohu a vrátí každý záznam. Pokud existuje výjimka pro jeden ze záznamů, skript místo hodnoty zapíše výjimku. Toto chování je užitečné, protože výjimky můžou poskytovat další informace, které nemusí být během výstupu zaprotokolovány normálně.

$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
    }
}

Další kroky