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:
- Tekstrunbook bewerken in Azure Automation
- Belangrijke PowerShell Workflow-concepten voor Automation-runbooks leren
- Python 2-pakketten beheren in Azure Automation
- Python 3-pakketten (preview) beheren in Azure Automation
Een runbook maken in Azure Portal
- Meld u aan bij het Azure-portaal.
- Zoek en selecteer Automation-accounts.
- Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
- Selecteer runbooks in het Automation-account onder Procesautomatisering om de lijst met runbooks te openen.
- Klik op Een runbook maken.
- Geef het runbook een naam.
- 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
- De Runtime-versie selecteren
- Voer de toepasselijke beschrijving in
- 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.
- Zoek en selecteer Automatiseringsaccounts in Azure Portal.
- Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
- Selecteer runbooks in het Automation-account onder Procesautomatisering om de lijst met runbooks te openen.
- Klik op Een runbook importeren. U kunt een van de volgende opties selecteren:
- Bladeren naar bestand - selecteert een bestand op uw lokale computer.
- Bladeren vanuit galerie - U kunt bladeren en een bestaand runbook selecteren in de galerie.
- Selecteer het bestand.
- 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.
- Het runbooktype wordt automatisch ingevuld, maar u kunt het type wijzigen nadat rekening is gehouden met de toepasselijke beperkingen.
- De Runtime-versie is automatisch ingevuld of kies de versie in de vervolgkeuzelijst.
- Klik op Importeren. Het nieuwe runbook wordt weergegeven in de lijst met runbooks voor het Automation-account.
- 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:
- Uit regel 5, verwijder
$AzureContext = (Connect-AzAccount -Identity).context
, - Vervang het door
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
, en - 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 roepen vaak externe systemen aan, 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 om te 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:
- Uit regel 5, verwijder
$AzureContext = (Connect-AzAccount -Identity).context
, - Vervang het door
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
, en - 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:
- Een Automation-account maken.
- Implementeer de rol Hybrid Runbook Worker .
- 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.
- Open de conceptversie van het runbook in de teksteditor of de grafische editor.
- Klik op Testen om de pagina Testen te openen.
- Als het runbook parameters heeft, worden deze weergegeven in het linkerdeelvenster, waar u waarden kunt opgeven die voor de test moeten worden gebruikt.
- Als u de test wilt uitvoeren op een Hybrid Runbook Worker, wijzigt u Run Settings 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.
- Klik op Start om de test te starten.
- 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.
- 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
- Zoek en selecteer Automatiseringsaccounts in Azure Portal.
- Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
- Open het runbook in uw Automation-account.
- Klik op Bewerken.
- 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:
- Zoek en selecteer Automatiseringsaccounts in Azure Portal.
- Selecteer op de pagina Automation-accounts uw Automation-account in de lijst.
- Selecteer het runbook in uw lijst met runbooks.
- Selecteer Planningen onder Resources.
- Selecteer Een planning toevoegen.
- Selecteer Een planning toevoegen aan uw runbook in het deelvenster Runbook plannen.
- Kies Een nieuwe planning maken in het deelvenster Planning.
- Voer een naam, beschrijving en andere parameters in het deelvenster Nieuwe planning in.
- Zodra de planning is gemaakt, markeert u deze en klikt u op OK. Deze moet nu worden gekoppeld aan uw runbook.
- 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.
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.
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.
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.
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-AzAutomationRunbook
van, 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
- Zie Voorbeeldquery's voor taaklogboeken en taakstromen voor voorbeeldquery's
- Zie Runbook-uitvoering in Azure Automation voor meer informatie over runbookbeheer.
- Zie Tekstrunbooks bewerken in Azure Automation om een PowerShell-runbook voor te bereiden.
- Zie Runbookproblemen oplossen om problemen met runbookuitvoering op te lossen.