Konfigurera runbook-utdata och meddelandeströmmar

De flesta Azure Automation-runbooks har någon form av utdata. Det här utdata kan vara ett felmeddelande till användaren eller ett komplext objekt som är avsett att användas med en annan runbook. Windows PowerShell tillhandahåller flera strömmar för att skicka utdata från ett skript eller arbetsflöde. Azure Automation fungerar med var och en av dessa strömmar på olika sätt. Du bör följa metodtipsen för att använda strömmarna när du skapar en runbook.

I följande tabell beskrivs kortfattat varje ström med dess beteende i Azure-portalen för publicerade runbooks och under testning av en runbook. Utdataströmmen är huvudströmmen som används för kommunikation mellan runbooks. De andra strömmarna klassificeras som meddelandeströmmar som är avsedda att förmedla information till användaren.

Stream Description Publicerad Testa
Fel Felmeddelande avsett för användaren. Till skillnad från ett undantag fortsätter runbooken efter ett felmeddelande som standard. Skrivet till jobbhistorik Visas i testutdatafönstret
Felsöka Meddelanden avsedda för en interaktiv användare. Bör inte användas i runbooks. Skrivs inte till jobbhistorik Visas inte i testutdatafönstret
Utdata Objekt som är avsedda att användas av andra runbooks. Skrivet till jobbhistorik Visas i testutdatafönstret
Förlopp Poster som genereras automatiskt före och efter varje aktivitet i runbooken. Runbooken bör inte försöka skapa egna förloppsposter eftersom de är avsedda för en interaktiv användare. Skrivs endast till jobbhistorik om förloppsloggning är aktiverat för runbooken Visas inte i testutdatafönstret
Utförlig Meddelanden som ger allmän information eller felsökningsinformation. Skrivs endast till jobbhistorik om utförlig loggning är aktiverad för runbooken Visas endast i testutdatafönstret om VerbosePreference variabeln är inställd på Fortsätt i runbook
Varning Varningsmeddelande avsett för användaren. Skrivet till jobbhistorik Visas i testutdatafönstret

Använda utdataströmmen

Utdataströmmen används för utdata från objekt som skapats av ett skript eller arbetsflöde när den körs korrekt. Azure Automation använder främst den här strömmen för objekt som ska användas av överordnade runbooks som anropar den aktuella runbooken. När en överordnad anropar en runbook infogad returnerar underordnad data från utdataströmmen till den överordnade.

Din runbook använder utdataströmmen för att kommunicera allmän information till klienten endast om den aldrig anropas av en annan runbook. Som bästa praxis bör dock dina runbooks vanligtvis använda den utförliga strömmen för att kommunicera allmän information till användaren.

Låt runbooken skriva data till utdataströmmen med hjälp av Write-Output. Du kan också placera objektet på en egen rad i skriptet.

#The following lines both write an object to the output stream.
Write-Output -InputObject $object
$object

Hantera utdata från en funktion

När en runbook-funktion skriver till utdataströmmen skickas utdata tillbaka till runbooken. Om runbooken tilldelar utdata till en variabel skrivs inte utdata till utdataströmmen. Skriva till andra strömmar inifrån funktionen skriver till motsvarande dataström för runbooken. Överväg följande powershell-arbetsflödeskörningsexempel.

Workflow Test-Runbook
{
  Write-Verbose "Verbose outside of function" -Verbose
  Write-Output "Output outside of function"
  $functionOutput = Test-Function
  $functionOutput

  Function Test-Function
  {
    Write-Verbose "Verbose inside of function" -Verbose
    Write-Output "Output inside of function"
  }
}

Utdataströmmen för runbook-jobbet är:

Output inside of function
Output outside of function

Den utförliga strömmen för runbook-jobbet är:

Verbose outside of function
Verbose inside of function

När du har publicerat runbooken och innan du startar den måste du också aktivera utförlig loggning i runbook-inställningarna för att få utförliga strömutdata.

Deklarera utdatatyp

Följande är exempel på utdatatyper:

  • System.String
  • System.Int32
  • System.Collections.Hashtable
  • Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine

Deklarera datatypen utdata i ett arbetsflöde

Ett arbetsflöde anger datatypen för dess utdata med hjälp av attributet OutputType. Det här attributet har ingen effekt under körningen, men det ger dig en indikation vid designtillfället för de förväntade utdata från runbooken. När verktygsuppsättningen för runbooks fortsätter att utvecklas ökar vikten av att deklarera utdatatyper vid designtillfället. Därför är det bästa praxis att inkludera den här deklarationen i alla runbooks som du skapar.

Följande exempel-runbook matar ut ett strängobjekt och innehåller en deklaration av dess utdatatyp. Om runbooken matar ut en matris av en viss typ bör du fortfarande ange typen i stället för en matris av typen.

Workflow Test-Runbook
{
  [OutputType([string])]

  $output = "This is some string output."
  Write-Output $output
}

Deklarera datatypen utdata i en grafisk runbook

Om du vill deklarera en utdatatyp i en grafisk eller grafisk PowerShell Workflow-runbook kan du välja menyalternativet Indata och utdata och ange utdatatypen. Vi rekommenderar att du använder det fullständiga .NET-klassnamnet för att göra typen lätt identifierbar när en överordnad runbook refererar till den. Med det fullständiga namnet exponeras alla egenskaper för klassen för databussen i runbooken och ökar flexibiliteten när egenskaperna används för villkorsstyrd logik, loggning och refererar till som värden för andra runbook-aktiviteter.
Runbook Input and Output option

Kommentar

När du har angett ett värde i fältet Utdatatyp i fönstret Egenskaper för indata och utdata måste du klicka utanför kontrollen så att den känner igen posten.

I följande exempel visas två grafiska runbooks för att demonstrera indata- och utdatafunktionen. Om du använder den modulära runbookdesignmodellen har du en runbook som mallen Authenticate Runbook som hanterar autentisering med Azure med hanterade identiteter. Den andra runbooken, som normalt utför kärnlogik för att automatisera ett visst scenario, kör i det här fallet mallen Authenticate Runbook. Resultatet visas i fönstret Testutdata. Under normala omständigheter skulle du låta den här runbooken göra något mot en resurs som utnyttjar utdata från den underordnade runbooken.

Här är den grundläggande logiken i Runbooken AuthenticateTo-Azure .
Authenticate Runbook Template Example.

Runbooken innehåller utdatatypen Microsoft.Azure.Commands.Profile.Models.PSAzureProfile, som returnerar egenskaperna för autentiseringsprofilen.
Runbook Output Type Example

Även om den här runbooken är enkel finns det ett konfigurationsobjekt att anropa här. Den senaste aktiviteten kör cmdleten Write-Output för att skriva profildata till en variabel med hjälp av ett PowerShell-uttryck för parametern Inputobject . Den här parametern krävs för Write-Output.

Den andra runbooken i det här exemplet, med namnet Test-ChildOutputType, definierar helt enkelt två aktiviteter.
Example Child Output Type Runbook

Den första aktiviteten anropar Runbooken AuthenticateTo-Azure . Den andra aktiviteten kör cmdleten Write-Verbose med datakällan inställd på Aktivitetsutdata. Fältsökvägen är också inställd på Context.Subscription.Name, kontextutdata från Runbooken AuthenticateTo-Azure.

Screenshot of write-verbose cmdlet parameter data source.

Resultatet är namnet på prenumerationen.
Test-ChildOutputType Runbook Results

Arbeta med meddelandeströmmar

Till skillnad från utdataströmmen kommunicerar meddelandeströmmar information till användaren. Det finns flera meddelandeströmmar för olika typer av information, och Azure Automation hanterar varje dataström på olika sätt.

Skriva utdata till varnings- och felströmmar

Varnings- och felströmmar loggproblem som uppstår i en runbook. Azure Automation skriver dessa strömmar till jobbhistoriken när du kör en runbook. Automation innehåller strömmarna i fönstret Testa utdata i Azure-portalen när en runbook testas.

Som standard fortsätter en runbook att köras efter en varning eller ett fel. Du kan ange att runbooken ska pausas vid en varning eller ett fel genom att låta runbooken ange en inställningsvariabel innan du skapar meddelandet. Om du till exempel vill att runbooken ska pausas vid ett fel som vid ett undantag anger du variabeln ErrorActionPreference till Stoppa.

Skapa en varning eller ett felmeddelande med hjälp av cmdleten Write-Warning eller Write-Error . Aktiviteter kan också skriva till varnings- och felströmmarna.

#The following lines create a warning message and then an error message that will suspend the runbook.

$ErrorActionPreference = "Stop"
Write-Warning -Message "This is a warning message."
Write-Error -Message "This is an error message that will stop the runbook because of the preference variable."

Skriva utdata för att felsöka dataström

Azure Automation använder dataströmmen för felsökningsmeddelanden för interaktiva användare. Som standard samlar Azure Automation inte in några felsökningsströmdata, endast utdata, fel och varningsdata samlas in samt utförliga data om runbooken är konfigurerad för att avbilda den.

För att kunna samla in data från felsökningsströmmar måste du utföra två åtgärder i dina runbooks:

  1. Ange variabeln $GLOBAL:DebugPreference="Continue", som talar om för PowerShell att fortsätta när ett felsökningsmeddelande påträffas. Delen $GLOBAL: uppmanar PowerShell att göra detta i det globala omfånget i stället för det lokala omfång som skriptet finns i när instruktionen körs.

  2. Omdirigera felsökningsströmmen som vi inte samlar in till en ström som vi samlar in, till exempel utdata. Detta görs genom att ställa in PowerShell-omdirigering mot instruktionen som ska köras. Mer information om PowerShell-omdirigering finns i Omdirigering.

Exempel

I det här exemplet konfigureras runbooken Write-Output med hjälp av cmdletarna och Write-Debug med avsikten att mata ut två olika strömmar.

Write-Output "This is an output message." 
Write-Debug "This is a debug message."

Om den här runbooken skulle köras som den är skulle utdatafönstret för runbook-jobbet strömma följande utdata:

This is an output message.

I det här exemplet konfigureras runbooken ungefär som i föregående exempel, förutom att -instruktionen $GLOBAL:DebugPreference="Continue" ingår i tillägget av 5>&1 i slutet av -instruktionen Write-Debug .

Write-Output "This is an output message." 
$GLOBAL:DebugPreference="Continue" 
Write-Debug "This is a debug message." 5>&1

Om den här runbooken skulle köras strömmas följande utdata i utdatafönstret för runbook-jobbet:

This is an output message.
This is a debug message.

Detta beror på att instruktionen $GLOBAL:DebugPreference="Continue" instruerar PowerShell att visa felsökningsmeddelanden, och tillägget i slutet av 5>&1 -instruktionen Write-Debug uppmanar PowerShell att omdirigera stream 5 (felsökning) till stream 1 (utdata).

Skriva utdata till utförlig ström

Den utförliga meddelandeströmmen stöder allmän information om runbook-åtgärden. Eftersom felsökningsströmmen inte är tillgänglig för en runbook bör runbooken använda utförliga meddelanden för felsökningsinformation.

Som standard lagrar jobbhistoriken inte utförliga meddelanden från publicerade runbooks av prestandaskäl. Om du vill lagra utförliga meddelanden använder du fliken Konfigurera i Azure-portalen med inställningen Log Verbose Records för att konfigurera publicerade runbooks för att logga utförliga meddelanden. Aktivera det här alternativet bara för att felsöka eller felsöka en runbook. I de flesta fall bör du behålla standardinställningen att inte logga utförliga poster.

När du testar en runbook visas inte utförliga meddelanden även om runbooken har konfigurerats för att logga utförliga poster. Om du vill visa utförliga meddelanden när du testar en runbook måste du ange variabeln VerbosePreference till Fortsätt. Med den variabeluppsättningen visas utförliga meddelanden i fönstret Testa utdata i Azure-portalen.

Följande kod skapar ett utförligt meddelande med cmdleten Write-Verbose .

#The following line creates a verbose message.

Write-Verbose -Message "This is a verbose message."

Hantera förloppsposter

Du kan använda fliken Konfigurera i Azure-portalen för att konfigurera en runbook för att logga förloppsposter. Standardinställningen är att inte logga posterna för att maximera prestanda. I de flesta fall bör du behålla standardinställningen. Aktivera det här alternativet bara för att felsöka eller felsöka en runbook.

Om du aktiverar loggning av förloppsposter skriver runbooken en post till jobbhistoriken före och efter att varje aktivitet körs. När du testar en runbook visas inte förloppsmeddelanden även om runbooken har konfigurerats för att logga förloppsposter.

Kommentar

Cmdleten Write-Progress är inte giltig i en runbook eftersom den här cmdleten är avsedd att användas med en interaktiv användare.

Arbeta med inställningsvariabler

Du kan ange vissa Windows PowerShell-inställningsvariabler i dina runbooks för att styra svaret på data som skickas till olika utdataströmmar. I följande tabell visas de inställningsvariabler som kan användas i runbooks, med deras standardvärden och giltiga värden. Ytterligare värden är tillgängliga för inställningsvariablerna när de används i Windows PowerShell utanför Azure Automation.

Olika Standardvärde Giltiga värden
WarningPreference Fortsätt Stoppa
Fortsätt
TystKontinuera
ErrorActionPreference Fortsätt Stoppa
Fortsätt
TystKontinuera
VerbosePreference TystKontinuera Stoppa
Fortsätt
TystKontinuera

I nästa tabell visas beteendet för de inställningsvariabelvärden som är giltiga i runbooks.

Värde Funktionssätt
Fortsätt Loggar meddelandet och fortsätter att köra runbooken.
TystKontinuera Fortsätter att köra runbooken utan att logga meddelandet. Det här värdet innebär att meddelandet ignoreras.
Stoppa Loggar meddelandet och pausar runbooken.

Hämtar runbook-utdata och -meddelanden

Hämta runbook-utdata och meddelanden i Azure-portalen

Du kan visa information om ett runbook-jobb i Azure-portalen med hjälp av fliken Jobb för runbooken. Jobbsammanfattningen visar indataparametrarna och utdataströmmen, förutom allmän information om jobbet och eventuella undantag som har inträffat. Jobbhistoriken innehåller meddelanden från utdataströmmen och varnings- och felströmmar. Den innehåller också meddelanden från utförliga dataströmmar och förloppsposter om runbooken är konfigurerad för att logga utförliga och förloppsposter.

Kommentar

Jobbströmmar för Python-runbooks stöds för närvarande för utdata på engelska.

Hämta runbook-utdata och meddelanden i Windows PowerShell

I Windows PowerShell kan du hämta utdata och meddelanden från en runbook med hjälp av cmdleten Get-AzAutomationJobOutput . Den här cmdleten kräver jobbets ID och har en parameter med namnet Stream där du kan ange vilken dataström som ska hämtas. Du kan ange värdet Alla för den här parametern för att hämta alla strömmar för jobbet.

I följande exempel startas en exempel-runbook och väntar sedan på att den ska slutföras. När runbooken har slutfört körningen samlar skriptet in runbook-utdataströmmen från jobbet.

$job = Start-AzAutomationRunbook -ResourceGroupName "ResourceGroup01" `
  -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook"

$doLoop = $true
While ($doLoop) {
  $job = Get-AzAutomationJob -ResourceGroupName "ResourceGroup01" `
    -AutomationAccountName "MyAutomationAccount" -Id $job.JobId
  $status = $job.Status
  $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped"))
}

Get-AzAutomationJobOutput -ResourceGroupName "ResourceGroup01" `
  -AutomationAccountName "MyAutomationAccount" -Id $job.JobId -Stream Output

# For more detailed job output, pipe the output of Get-AzAutomationJobOutput to Get-AzAutomationJobOutputRecord
Get-AzAutomationJobOutput -ResourceGroupName "ResourceGroup01" `
  -AutomationAccountName "MyAutomationAccount" -Id $job.JobId -Stream Any | Get-AzAutomationJobOutputRecord

Hämta runbook-utdata och meddelanden i grafiska runbooks

För grafiska runbooks är extra loggning av utdata och meddelanden tillgänglig i form av spårning på aktivitetsnivå. Det finns två nivåer av spårning: Basic och Detailed. Grundläggande spårning visar start- och sluttiden för varje aktivitet i runbooken, plus information om eventuella aktivitetsförsök. Några exempel är antalet försök och aktivitetens starttid. Detaljerad spårning innehåller grundläggande spårningsfunktioner samt loggning av indata och utdata för varje aktivitet.

För närvarande skriver spårning på aktivitetsnivå poster med hjälp av den utförliga strömmen. Därför måste du aktivera utförlig loggning när du aktiverar spårning. För grafiska runbooks med spårning aktiverat behöver du inte logga förloppsposter. Grundläggande spårning har samma syfte och är mer informativt.

Graphical authoring job streams view

Du kan se från bilden att aktivering av utförlig loggning och spårning för grafiska runbooks gör mycket mer information tillgänglig i produktionsjobbet Flöden vy. Den här extra informationen kan vara nödvändig för att felsöka produktionsproblem med en runbook.

Men om du inte behöver den här informationen för att spåra förloppet för en runbook för felsökning, kanske du vill fortsätta spåra inaktiverad som en allmän praxis. Spårningsposterna kan vara särskilt många. Med grafisk runbookspårning kan du få två till fyra poster per aktivitet, beroende på konfigurationen av Grundläggande eller Detaljerad spårning.

Så här aktiverar du spårning på aktivitetsnivå:

  1. Öppna ditt Automation-konto på Azure Portal.

  2. Välj Runbooks under Process Automation för att öppna listan över runbooks.

  3. På sidan Runbooks väljer du en grafisk runbook i din lista över runbooks.

  4. Under Inställningar klickar du på Loggning och spårning.

  5. På sidan Loggning och spårning under Log verbose records (Logga utförliga poster) klickar du på för att aktivera utförlig loggning.

  6. Under Spårning på aktivitetsnivå ändrar du spårningsnivån till Grundläggande eller Detaljerad, baserat på den spårningsnivå som du behöver.

    Graphical Authoring Logging and Tracing page

Hämta runbook-utdata och meddelanden i Microsoft Azure Monitor-loggar

Azure Automation kan skicka runbook-jobbstatus och jobbströmmar till din Log Analytics-arbetsyta. Azure Monitor stöder loggar som gör att du kan:

  • Få insikt i dina Automation-jobb.
  • Utlös ett e-postmeddelande eller en avisering baserat på din runbook-jobbstatus, till exempel Misslyckad eller Pausad.
  • Skriva avancerade frågor mellan jobbströmmar.
  • Korrelera jobb för olika Automation-konton.
  • Visualisera jobbhistorik.

Mer information om hur du konfigurerar integrering med Azure Monitor-loggar för att samla in, korrelera och agera på jobbdata finns i Vidarebefordra jobbstatus och jobbströmmar från Automation till Azure Monitor-loggar.

Nästa steg