Runbook-utdata och meddelanden

Viktigt

Den här versionen Service Management Automation (SMA) har nått slutet av supporten. Vi rekommenderar att du uppgraderar till SMA 2022.

De flesta Automation Runbooks har någon form av utdata, till exempel ett felmeddelande för användaren eller ett komplext objekt som är avsett att användas av ett annat arbetsflöde. Windows PowerShell flera strömmar för att skicka utdata från ett arbetsflöde. Service Management Automation fungerar på olika sätt med var och en av dessa strömmar, och du bör följa bästa praxis för hur du använder var och en när du skapar en runbook.

Följande tabell innehåller en kort beskrivning av var och en av strömmarna och deras beteende i Hanteringsportal när du kör en publicerad runbook och när du testar en runbook. Ytterligare information om varje dataström finns i följande avsnitt.

Stream Description Publicerad Testa
Utdata Objekt som ska användas av andra Runbooks. Skrivs till jobbhistoriken. Visas i rutan Testutdata.
Varning Varningsmeddelande avsett för användaren. Skrivs till jobbhistoriken. Visas i rutan Testutdata.
Fel Felmeddelande avsett för användaren. Till skillnad från ett undantag fortsätter Runbooken när ett felmeddelande visas som standard. Skrivs till jobbhistoriken. Visas i rutan Testutdata.
Verbose Meddelanden som ger allmän information eller information om felsökning. Skrivs till jobbhistoriken endast om utförlig loggning är aktiverad för Runbooken. Visas bara i fönstret Testutdata om $VerbosePreference har angetts till Fortsätt i runbooken.
Förlopp Poster som genereras automatiskt före och efter varje aktivitet i Runbooken. Runbooken ska inte försöka skapa sina egna förloppsposter eftersom de är avsedda för en interaktiv användare. Skrivs till jobbhistoriken endast om förloppsloggning är aktiverad för Runbooken. Visas inte i rutan Testutdata.
Felsöka Meddelanden avsedda för en interaktiv användare. Ska inte användas i Runbooks. Skrivs inte till jobbhistoriken. Skrivs inte till rutan Testutdata.

Utdataström

Utdataströmmen är avsedd för utdata från objekt som skapas av ett arbetsflöde när det körs korrekt. I Automation används den här dataströmmen främst för objekt som är avsedda att användas av överordnade runbooks som anropar den aktuella runbooken. När du anropar en infogade runbook från en överordnad runbook returneras data från utdataströmmen till den överordnade. Använd bara utdataströmmen för att kommunicera allmän information tillbaka till användaren om du vet att Runbooken aldrig kommer att anropas av en annan Runbook. Som bästa praxis bör du dock normalt använda den utförliga strömmen för att kommunicera allmän information till användaren.

Du kan skriva data till utdataströmmen med Write-Output eller genom att placera objektet på en egen rad i runbooken.

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

Utdata från en funktion

När du skriver till utdataströmmen i en funktion som ingår i din Runbook skickas utdata tillbaka till Runbook. Om Runbooken tilldelar dessa utdata till en variabel skrivd den inte till utdataströmmen. Skrivning till andra dataströmmar inifrån funktionen skriver till motsvarande dataström för Runbook.

Studera följande exempel på Runbook.

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

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

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

Output outside of function

Den utförliga dataströmmen för Runbook-jobbet är:

Verbose outside of function
Verbose inside of function

Variabeln $functionOutput har värdet:

Output inside of fuction

Deklarera utdatatyp

Ett arbetsflöde kan ange datatypen för sina utdata med hjälp av attributet OutputType. Det här attributet har ingen effekt under körning, men ger en indikation till Runbook-författaren vid designtillfället vilka utdata som förväntas från Runbooken. Allteftersom verktygsuppsättningen för Runbooks fortsätter att utvecklas ökar vikten av att deklarera utdatatyper i vid designtillfället. Därför är det bäst att inkludera deklarationen i alla Runbooks du skapar.

Följande exempel-Runbook matar ut ett strängobjekt och innehåller en förklaring av utdatatypen. Om din Runbook matar ut en matris av en viss typ bör du fortfarande ange typen, till skillnad från en matris av typen.

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

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

Meddelandeströmmar

Till skillnad från utdataströmmen är meddelandeströmmar avsedda att ge användaren information. Det finns flera meddelandeströmmar för olika typer av information och var och en hanteras på olika sätt av Automation.

Varnings- och felströmmar

Varningar och felströmmar är avsedda att logga problem som uppstår i en Runbook. De skrivs till jobbhistoriken när en Runbook körs och ingår i fönstret rutan Testutdata i hanteringsportalen när en Runbook testas. Som standard fortsätter Runbook att köras efter en varning eller ett fel. Du kan ange att runbooken ska pausas på en varning eller ett fel genom att ange en inställningsvariabel i runbooken innan du skapar meddelandet. Om du till exempel vill göra så att en runbook pausar ett fel på samma sätt som ett undantag anger du $ErrorActionPreference till Stoppa.

Skapa en varning eller ett felmeddelande med hjälp av cmdleten Write-Warningeller Write-Error . Aktiviteter kan också skriva till dessa strömmar.

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

Utförlig ström

Den utförliga meddelandeströmmen är avsedd för allmän information om Runbook-åtgärden. Eftersom felsökningsströmmen inte är tillgänglig i en runbook bör utförliga meddelanden användas för felsökningsinformation. Som standard sparas utförliga meddelanden från publicerade Runbooks inte i jobbhistoriken. Om du vill lagra utförliga meddelanden konfigurerar du publicerade runbooks för att logga utförliga poster på fliken Konfigurera för runbooken i Hanteringsportal. I de flesta fall bör du behålla standardinställningen att inte logga utförliga poster för en Runbook, av prestandaskäl. Aktivera bara det här alternativet om du behöver felsöka en runbook.

Variabeln $VerbosePreference standardvärdet SilentlyContinue. Du behöver inte ändra den här variabeln i en publicerad Runbook för att utförliga meddelanden ska sparas. Om det här värdet uttryckligen anges till SilentlyContinue i en publicerad runbook kommer utförliga meddelanden inte att lagras även om runbooken har konfigurerats för att logga utförliga poster.

När du testar en runbook visas inte utförliga meddelanden även om runbooken är konfigurerad för att logga utförliga poster. Om du vill visa utförliga meddelanden när du testar en runbook måste du $VerbosePreference variabeln till Fortsätt. Med ett värde på den här variabeln visas utförliga meddelanden i rutan Testutdata i hanteringsportalen.

Skapa ett utförligt meddelande med hjälp av cmdleten Write-Verbose .

#The following line creates a verbose message.

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

Felsöka dataström

Felsökningsströmmen är avsedd för att användas med en interaktiv användare och ska inte användas i Runbooks.

Förloppsposter

Om du konfigurerar en runbook för att logga förloppsposter (på fliken Konfigurera för runbooken i Hanteringsportal) skrivs en post till jobbhistoriken före och efter att varje aktivitet har körts. I de flesta fall bör du behålla standardinställningen att inte logga förloppsposter för en Runbook, för att maximera prestanda. Aktivera bara det här alternativet om du behöver felsöka en runbook. När du testar en Runbook visas inte förloppsmeddelanden även om Runbooken har konfigurerats för att logga förloppsposter.

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

Inställningsvariabler

Windows PowerShell använder inställningsvariabler för att avgöra hur data ska svara på data som skickas till olika utdataströmmar. Du kan ange värden på dessa variabler i en Runbook och styra hur de ska svara på data som skickas till olika dataströmmar.

I följande tabell visas de preferensvariabler som kan användas i Runbooks med sina giltiga värden och standardvärden. Observera att den här tabellen bara innehåller de värden som är giltiga i en Runbook. Ytterligare värden är giltiga för inställningsvariablerna när de används Windows PowerShell utanför Service Management Automation.

Variabel Standardvärde Giltiga värden
WarningPreference Fortsätt Stoppa
Fortsätt
SilentlyContinue
ErrorActionPreference Fortsätt Stoppa
Fortsätt
SilentlyContinue
VerbosePreference SilentlyContinue Stoppa
Fortsätt
SilentlyContinue

I följande tabell visas beteendet för de preferensvariabelvärden som är giltiga i Runbooks.

Värde Beteende
Fortsätt Loggar meddelandet och fortsätter att köra Runbooken.
SilentlyContinue Fortsätter att köra Runbooken utan att logga meddelandet. Detta innebär att meddelandet ignoreras.
Stoppa Loggar meddelandet och gör uppehåll i körningen av Runbooken.

Hämta Runbook-utdata och meddelanden

Hanteringsportal

Du kan visa information om ett Runbook-jobb i Hanteringsportal på fliken Jobb i en runbook. Sammanfattningen av jobbet visar indataparametrarna och utdataströmmen samt allmän information om jobbet och eventuella undantag om de inträffade. Historiken innehåller meddelanden från utdataströmmen och varnings- och Flöden förutom utförliga stream- och förloppsposter om runbooken är konfigurerad för att logga utförliga poster och förloppsposter.

Windows PowerShell

I Windows PowerShell kan du hämta utdata och meddelanden från en runbook med hjälp av cmdleten Get-SmaJobOutput. Den här cmdleten kräver ID för jobbet och har en parameter med namnet Stream där du anger vilken dataström som ska returneras. Du kan ange Alla för att returnera 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 den har slutförts hämtas dess utdataström från jobbet.

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$job = Start-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

$doLoop = $true
While ($doLoop) {
   $job = Get-SmaJob -WebServiceEndpoint $webServer -Port $port -Id $job.Id
   $status = $job.Status
   $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped")
}

Get-SmaJobOutput -WebServiceEndpoint $webServer -Port $port -Id $job.Id -Stream Output

Nästa steg

Skapa Automation-runbooks