Runbooks beheren in Azure Automation

U kunt een runbook toevoegen aan Azure Automation door een nieuw runbook te maken of een bestaand runbook te importeren uit een bestand of de runbookgalerie. Dit artikel bevat informatie over het beheren van een runbook en aanbevolen patronen en aanbevolen procedures met runbookontwerp. U vindt alle details van het openen van community-runbooks en modules in Runbook- en modulegalerieën voor Azure Automation.

Een runbook maken

Maak een nieuw runbook in Azure Automation met behulp van Azure Portal of PowerShell. Zodra het runbook is gemaakt, kunt u het bewerken met behulp van informatie in:

Een runbook maken in Azure Portal

  1. Meld u aan bij de Azure-portal.
  2. Zoek en selecteer Automation-accounts.
  3. Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
  4. Selecteer runbooks in het Automation-account onder Procesautomatisering om de lijst met runbooks te openen.
  5. Klik op Een runbook maken.
    1. Geef het runbook een naam.
    2. In de vervolgkeuzelijst Runbooktype . Selecteer het type. De naam van het runbook moet beginnen met een letter en kan letters, cijfers, onderstrepingstekens en streepjes bevatten
    3. De Runtime-versie selecteren
    4. Voer de toepasselijke beschrijving in
  6. Klik op Maken om het runbook te maken.

Een runbook maken met PowerShell

Gebruik de cmdlet New-AzAutomationRunbook om een leeg runbook te maken. Gebruik de Type parameter om een van de runbooktypen op te geven die zijn gedefinieerd voor New-AzAutomationRunbook.

In het volgende voorbeeld ziet u hoe u een nieuw leeg runbook maakt.

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

Een runbook importeren

U kunt een PowerShell- of PowerShell Workflow-script (.ps1), een grafisch runbook (.graphrunbook) of een Python 2- of Python 3-script (.py) importeren om uw eigen runbook te maken. U geeft het type runbook op dat tijdens het importeren wordt gemaakt, rekening houdend met de volgende overwegingen.

  • U kunt een .ps1-bestand importeren dat geen werkstroom bevat in een PowerShell-runbook of een PowerShell Workflow-runbook. Als u het importeert in een PowerShell Workflow-runbook, wordt het geconverteerd naar een werkstroom. In dit geval worden opmerkingen opgenomen in het runbook om de aangebrachte wijzigingen te beschrijven.

  • U kunt alleen een PS1-bestand met een PowerShell-werkstroom importeren in een PowerShell Workflow-runbook. Als het bestand meerdere PowerShell-werkstromen bevat, mislukt het importeren. U moet elke werkstroom opslaan in een eigen bestand en elke werkstroom afzonderlijk importeren.

  • Importeer geen PS1-bestand met een PowerShell-werkstroom in een PowerShell-runbook, omdat de PowerShell-scriptengine dit niet kan herkennen.

  • Importeer alleen een .graphrunbook-bestand in een nieuw grafisch runbook.

Een runbook importeren vanuit Azure Portal

U kunt de volgende procedure gebruiken om een scriptbestand te importeren in Azure Automation.

Notitie

U kunt alleen een PS1-bestand importeren in een PowerShell Workflow-runbook met behulp van de portal.

  1. Zoek en selecteer Automatiseringsaccounts in Azure Portal.
  2. Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
  3. Selecteer runbooks in het Automation-account onder Procesautomatisering om de lijst met runbooks te openen.
  4. Klik op Een runbook importeren. U kunt een van de volgende opties selecteren:
    1. Bladeren naar bestand - selecteert een bestand op uw lokale computer.
    2. Bladeren vanuit galerie - U kunt bladeren en een bestaand runbook selecteren in de galerie.
  5. Selecteer het bestand.
  6. Als het veld Naam is ingeschakeld, kunt u de naam van het runbook wijzigen. De naam moet beginnen met een letter en kan letters, cijfers, onderstrepingstekens en streepjes bevatten.
  7. Het runbooktype wordt automatisch ingevuld, maar u kunt het type wijzigen nadat rekening is gehouden met de toepasselijke beperkingen.
  8. De Runtime-versie is automatisch ingevuld of kies de versie in de vervolgkeuzelijst.
  9. Klik op Importeren. Het nieuwe runbook wordt weergegeven in de lijst met runbooks voor het Automation-account.
  10. U moet het runbook publiceren voordat u het kunt uitvoeren.

Notitie

Nadat u een grafisch runbook hebt geïmporteerd, kunt u het converteren naar een ander type. U kunt echter geen grafisch runbook converteren naar een tekstueel runbook.

Een runbook importeren met PowerShell

Gebruik de cmdlet Import-AzAutomationRunbook om een scriptbestand als conceptrunbook te importeren. Als het runbook al bestaat, mislukt het importeren, tenzij u de Force parameter met de cmdlet gebruikt.

In het volgende voorbeeld ziet u hoe u een scriptbestand importeert in een runbook.

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

Resources verwerken

Als uw runbook een resource maakt, moet het script controleren of de resource al bestaat voordat u deze probeert te maken. Hier volgt een basisvoorbeeld.

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

Details ophalen uit activiteitenlogboek

U kunt runbookgegevens ophalen, zoals de persoon of het account waarmee een runbook is gestart, uit het activiteitenlogboek voor het Automation-account. Het volgende PowerShell-voorbeeld biedt de laatste gebruiker om het opgegeven runbook uit te voeren.

$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

Voortgang bijhouden

Het is een goede gewoonte om uw runbooks te ontwerpen om modulair te zijn in de natuur, met logica die eenvoudig opnieuw kan worden gebruikt en opnieuw kan worden gestart. Het bijhouden van de voortgang in een runbook zorgt ervoor dat de runbooklogica correct wordt uitgevoerd als er problemen zijn.

U kunt de voortgang van een runbook bijhouden met behulp van een externe bron, zoals een opslagaccount, een database of gedeelde bestanden. Maak logica in uw runbook om eerst de status van de laatst uitgevoerde actie te controleren. Vervolgens kan de logica, op basis van de resultaten van de controle, specifieke taken in het runbook overslaan of voortzetten.

Gelijktijdige taken voorkomen

Sommige runbooks gedragen zich vreemd als ze meerdere taken tegelijk uitvoeren. In dit geval is het belangrijk dat een runbook logica implementeert om te bepalen of er al een actieve taak is. Hier volgt een basisvoorbeeld.

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

Als u wilt dat het runbook wordt uitgevoerd met de door het systeem toegewezen beheerde identiteit, laat u de code staan. Als u liever een door de gebruiker toegewezen beheerde identiteit gebruikt, gaat u als volgende te werk:

  1. Uit regel 5, verwijder $AzureContext = (Connect-AzAccount -Identity).context,
  2. Vervang het door $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, en
  3. Voer de client-id in.

Notitie

Voor hybride PowerShell 7.2-taken moet u wijzigingen aanbrengen in regel 28. Vervang $PSPrivateMetadata.JobId.Guid door $env:PSPrivateMetaData.

Tijdelijke fouten verwerken in een tijdafhankelijk script

Uw runbooks moeten robuust zijn en in staat zijn om fouten te verwerken, inclusief tijdelijke fouten die ertoe kunnen leiden dat ze opnieuw worden opgestart of mislukken. Als een runbook mislukt, probeert Azure Automation het opnieuw.

Als uw runbook normaal gesproken binnen een tijdsbeperking wordt uitgevoerd, moet u de logica voor het uitvoeren van het script implementeren om de uitvoeringstijd te controleren. Deze controle zorgt ervoor dat bewerkingen, zoals opstarten, afsluiten of uitschalen, alleen tijdens bepaalde tijden worden uitgevoerd.

Notitie

De lokale tijd in het Azure-sandboxproces is ingesteld op UTC. Berekeningen voor datum en tijd in uw runbooks moeten rekening houden met dit feit.

Logica opnieuw proberen in runbook om tijdelijke fouten te voorkomen

Runbooks voeren vaak aanroepen naar externe systemen, zoals Azure via ARM, Azure Resource Graph, SQL-services en andere webservices. Wanneer het systeem dat de runbooks aanroepen bezet is, tijdelijk niet beschikbaar is of bandbreedtebeperking onder belasting implementeert, zijn de aanroepen kwetsbaar voor runtimefouten. Als u tolerantie in de runbooks wilt bouwen, moet u logica voor opnieuw proberen implementeren bij het maken van de aanroepen, zodat de runbooks een tijdelijk probleem kunnen afhandelen zonder dat dit mislukt.

Raadpleeg het patroon Voor opnieuw proberen en algemene REST en richtlijnen voor opnieuw proberen voor meer informatie.

Voorbeeld 1: Als uw runbook slechts één of twee aanroepen doet

$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

Wanneer u belt Invoke-AzureRmResourceAction, kunt u tijdelijke fouten observeren. In dit scenario raden we u aan het volgende basispatroon rond de aanroep naar de cmdlet te implementeren.

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

Notitie

De poging om de oproep opnieuw uit te voeren, is maximaal drie keer, slaapt gedurende 30 seconden elke keer.

Voorbeeld 2: Als het runbook regelmatig externe aanroepen doet

Als het runbook regelmatig externe aanroepen doet, kan dit tijdelijke runtimeproblemen ondervinden. Maak een functie waarmee de logica voor opnieuw proberen wordt geïmplementeerd voor elke aanroep die wordt gedaan en de aanroep doorgeeft die moet worden uitgevoerd als scriptblok.

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

Vervolgens kunt u elke externe aanroep doorgeven aan de functie als

ResilientRemoteCall { Get-AzVm }
of

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

Met meerdere abonnementen werken

Uw runbook moet kunnen werken met abonnementen. Als u bijvoorbeeld meerdere abonnementen wilt verwerken, gebruikt het runbook de cmdlet Disable-AzContextAutosave . Deze cmdlet zorgt ervoor dat de verificatiecontext niet wordt opgehaald uit een ander runbook dat wordt uitgevoerd in dezelfde sandbox.

# 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

Als u wilt dat het runbook wordt uitgevoerd met de door het systeem toegewezen beheerde identiteit, laat u de code staan. Als u liever een door de gebruiker toegewezen beheerde identiteit gebruikt, gaat u als volgende te werk:

  1. Uit regel 5, verwijder $AzureContext = (Connect-AzAccount -Identity).context,
  2. Vervang het door $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, en
  3. Voer de client-id in.

Werken met een aangepast script

Notitie

U kunt normaal gesproken geen aangepaste scripts en runbooks uitvoeren op de host waarop een Log Analytics-agent is geïnstalleerd.

Een aangepast script gebruiken:

  1. Een Automation-account maken.
  2. Implementeer de rol Hybrid Runbook Worker .
  3. Als u een Linux-computer gebruikt, hebt u verhoogde bevoegdheden nodig. Meld u aan om handtekeningcontroles uit te schakelen.

Een runbook testen

Wanneer u een runbook test, wordt de conceptversie uitgevoerd en worden alle acties die worden uitgevoerd voltooid. Er wordt geen taakgeschiedenis gemaakt, maar de uitvoer - en waarschuwings- en foutstromen worden weergegeven in het deelvenster Testuitvoer . Berichten naar de uitgebreide stroom worden alleen weergegeven in het uitvoervenster als de variabele VerbosePreference is ingesteld op Continue.

Hoewel de conceptversie wordt uitgevoerd, wordt het runbook nog steeds normaal uitgevoerd en worden alle acties uitgevoerd op resources in de omgeving. Daarom moet u alleen runbooks testen op niet-productiebronnen.

Notitie

Alle runbookuitvoeringsacties worden vastgelegd in het activiteitenlogboek van het Automation-account met de naam van de bewerking Een Azure Automation-taak maken. Runbookuitvoering in een testvenster waarin de conceptversie van het runbook wordt uitgevoerd, wordt echter vastgelegd in de activiteitenlogboeken met de naam van de bewerkingsnaam Een Azure Automation-runbookconcept schrijven. Selecteer het tabblad Bewerking en JSON om het bereik te zien dat eindigt op .. /runbooks/(runbook name)/draft/testjob.

De procedure voor het testen van elk type runbook is hetzelfde. Er is geen verschil in het testen tussen de teksteditor en de grafische editor in de Azure-portal.

  1. Open de conceptversie van het runbook in de teksteditor of de grafische editor.
  2. Klik op Testen om de pagina Testen te openen.
  3. Als het runbook parameters heeft, worden deze weergegeven in het linkerdeelvenster, waar u waarden kunt opgeven die voor de test moeten worden gebruikt.
  4. Als u de test wilt uitvoeren op een Hybrid Runbook Worker, wijzigt u Run Instellingen in Hybrid Worker en selecteert u de naam van de doelgroep. Houd anders de standaardinstelling voor Azure om de test uit te voeren in de cloud.
  5. Klik op Start om de test te starten.
  6. U kunt de knoppen onder het deelvenster Uitvoer gebruiken om een PowerShell Workflow of grafisch runbook te stoppen of op te schorten terwijl het wordt getest. Wanneer u het runbook onderbreekt, wordt de huidige activiteit voltooid voordat het runbook wordt onderbroken. Zodra het runbook is onderbroken, kunt u het stoppen of opnieuw opstarten.
  7. Controleer de uitvoer van het runbook in het deelvenster Uitvoer .

Een runbook publiceren

Wanneer u een nieuw runbook maakt of importeert, moet u het publiceren voordat u het kunt uitvoeren. Elk runbook in Azure Automation heeft een conceptversie en een gepubliceerde versie. Alleen de gepubliceerde versie is beschikbaar om te worden uitgevoerd en alleen de conceptversie kan worden bewerkt. De gepubliceerde versie wordt niet beïnvloed door wijzigingen in de conceptversie. Wanneer de conceptversie beschikbaar moet worden gesteld, publiceert u deze en overschrijft u de huidige gepubliceerde versie met de conceptversie.

Een runbook publiceren in Azure Portal

  1. Zoek en selecteer Automatiseringsaccounts in Azure Portal.
  2. Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
  3. Open het runbook in uw Automation-account.
  4. Klik op Bewerken.
  5. Klik op Publiceren en selecteer Vervolgens Ja als reactie op het verificatiebericht.

Een runbook publiceren met Behulp van PowerShell

Gebruik de cmdlet Publish-AzAutomationRunbook om uw runbook te publiceren.

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

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

Een runbook inplannen in Azure Portal

Wanneer uw runbook is gepubliceerd, kunt u het plannen voor de bewerking:

  1. Zoek en selecteer Automatiseringsaccounts in Azure Portal.
  2. Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
  3. Selecteer het runbook in uw lijst met runbooks.
  4. Selecteer Planningen onder Resources.
  5. Selecteer Een planning toevoegen.
  6. Selecteer een planning aan uw runbook koppelen in het deelvenster Runbook plannen.
  7. Kies Een nieuwe planning maken in het deelvenster Planning .
  8. Voer een naam, beschrijving en andere parameters in het deelvenster Nieuw schema in.
  9. Zodra de planning is gemaakt, markeert u deze en klikt u op OK. Deze moet nu worden gekoppeld aan uw runbook.
  10. Zoek een e-mailbericht in uw postvak om u op de hoogte te stellen van de status van het runbook.

Verwijderd runbook herstellen

U kunt een verwijderd runbook herstellen via PowerShell-scripts. Als u een runbook wilt herstellen, moet u ervoor zorgen dat aan de volgende voorwaarden wordt voldaan:

  • De runbooks die moeten worden hersteld, zijn in de afgelopen 29 dagen verwijderd.
  • Het Automation-account voor dat runbook bestaat.
  • De rolmachtiging Automation-inzender wordt verleend aan de door het systeem toegewezen beheerde identiteit van het Automation-account.

PowerShell-script

  • Voer het PowerShell-script uit als een taak in uw Automation-account om de verwijderde runbooks te herstellen.
  • Download het PowerShell-script vanuit GitHub. U kunt ook het PowerShell-script met de naam Restore Automation-runbook importeren vanuit runbookgalerie. Geef de naam op van het runbook dat moet worden hersteld en voer het uit als een taak in Azure Automation om de verwijderde runbooks te herstellen.
  • Download het script van GitHub of importeer het PowerShell-script met de naam List Deleted Automation Runbook uit Runbook Gallery om de namen te identificeren van de runbooks die in de afgelopen 29 dagen zijn verwijderd.

Taakstatussen verkrijgen

Statussen weergeven in Azure Portal

Details van de verwerking van taken in Azure Automation vindt u in Taken. Wanneer u klaar bent om uw runbooktaken te zien, gebruikt u Azure Portal en opent u uw Automation-account. Aan de rechterkant ziet u een overzicht van alle runbooktaken in Taakstatistieken.

Job Statistics tile

In de samenvatting ziet u een telling en grafische weergave van de taakstatus voor elke uitgevoerde taak.

Als u op de tegel klikt, wordt de pagina Taken weergegeven, met daarin een samengevatte lijst met alle uitgevoerde taken. Op deze pagina ziet u de status, runbooknaam, begintijd en voltooiingstijd voor elke taak.

Screenshot of the Jobs page.

U kunt de lijst met taken filteren door Filtertaken te selecteren. Filter op een specifiek runbook, taakstatus of een keuze in de vervolgkeuzelijst en geef het tijdsbereik voor de zoekopdracht op.

Filter job status

U kunt ook de details van het taakoverzicht voor een specifiek runbook bekijken door dat runbook te selecteren op de pagina Runbooks in uw Automation-account en vervolgens Taken te selecteren. Deze actie geeft de pagina Taken weer. Hier kunt u op een taakrecord klikken om de details en uitvoer ervan weer te geven.

Screenshot of the Jobs page with the Errors button highlighted.

Taakstatussen ophalen met PowerShell

Gebruik de cmdlet Get-AzAutomationJob om de taken op te halen die zijn gemaakt voor een runbook en de details van een bepaalde taak. Als u een runbook start met behulp Start-AzAutomationRunbookvan, wordt de resulterende taak geretourneerd. Gebruik Get-AzAutomationJobOutput om taakuitvoer op te halen.

In het volgende voorbeeld wordt de laatste taak voor een voorbeeldrunbook opgehaald en worden de status, de waarden voor de runbookparameters en de taakuitvoer weergegeven.

$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

In het volgende voorbeeld wordt de uitvoer voor een specifieke taak opgehaald en wordt elke record geretourneerd. Als er een uitzondering is voor een van de records, schrijft het script de uitzondering in plaats van de waarde. Dit gedrag is handig omdat uitzonderingen aanvullende informatie kunnen bieden die mogelijk niet normaal wordt geregistreerd tijdens de uitvoer.

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

Volgende stappen