Dela via


Runbook-utdata och meddelanden

 

Utgivet: juni 2016

Gäller för: Windows Azure Pack for Windows Server, System Center 2012 R2 Orchestrator

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

Följande tabell ger en kort beskrivning av varje ström och deras beteende i hanteringsportalen, både 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.

Dataström

Beskrivning

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.

Utförlig

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 rutan Testutdata om $VerbosePreference har angetts till Continue 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 strömmen framför allt för objekt som ska konsumeras av överordnade Runbooks som anropar den aktuella Runbooken. När du anropar en infogad Runbook från en överordnad Runbook returnerar den data från utdataströmmen till den överordnade Runbooken. 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 regel bör du vanligtvis använda Utförlig dataström för att kommunicera allmän information till användaren.

Du kan skriva till utdataströmmen med hjälp av 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 function

Deklarerar utgående datatyp

Ett arbetsflöde kan specificera datatypen i utdata med OutputType-attributet. 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 olika av Automation.

Varningar 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 Runbook ska göra uppehåll när en varning eller ett fel uppstår, genom att ange en prioritetsvariabel i Runbooken innan du skapar meddelandet. Exempel: Om du vill få en Runbook att göra uppehåll när ett fel uppstår, på samma sätt som vid ett undantag, anger du $ErrorActionPreference till Stoppa.

Skapa en varning eller ett felmeddelande med hjälp av en Write-Warningg eller Write-Error cmdlet. 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 dataströ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 du använda utförliga meddelanden för felsökningsinformation. Som standard sparas utförliga meddelanden från publicerade Runbooks inte i jobbhistoriken. För att lagra utförliga meddelanden konfigurerar du publicerade Runbooks till Logga utförliga meddelanden i fliken Konfigurera i Runbooken i hanteringsportalen. 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.

Standardvärdet för variabeln $VerbosePreference är SilentlyContinue. Du behöver inte ändra den här variabeln i en publicerad Runbook för att utförliga meddelanden ska sparas. Men om det här värdet uttryckligen anges till SilentlyContinue i en publicerad Runbook sparas inte utförliga meddelanden även om Runbooken har konfigurerats för att logga utförliga poster.

När du testar en Runbook visas inte utförlig meddelanden även om Runbooken har konfigurerats för att logga utförliga poster. Om du vill visa utförliga meddelanden vid testning av en Runbook måste du ange variabeln $VerbosePreference till Continue. Med ett värde på den här variabeln visas utförliga meddelanden i rutan Testutdata i hanteringsportalen.

Skapa ett utförligt meddelande med Write-Verbose cmdlet:en.

#The following line creates a verbose message.

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

Felsökningsströmmen

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 förloppsposterna ska loggas (på fliken Konfigurera för Runbooken i hanteringsportalen) skrivs posten till jobbhistoriken före och efter att varje aktivitet körs. 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.

Cmdlet:en Write-Progress är inte giltig i en Runbook eftersom den är avsedd att användas med en interaktiv användare.

Preferensvariabler

Windows PowerShell använder preferensvariabler för att avgöra hur Runbooken ska reagera på de 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 preferensvariabler när de används i Windows PowerShell utanför Service Management Automation.

Variabel

Standardvärde

Giltiga värden

WarningPreference

Continue

Stop
Continue
SilentlyContinue

ErrorActionPreference

Continue

Stop
Continue
SilentlyContinue

VerbosePreference

SilentlyContinue

Stop
Continue
SilentlyContinue

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

Värde

Beteende

Continue

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.

Stop

Loggar meddelandet och gör uppehåll i körningen av Runbooken.

Hämtar Runbook-utdata och -meddelanden

Hanteringsportal

Du kan visa information om ett Runbook-jobb i hanteringsportalen från fliken Jobb i en Runbook. Sammanfattningen v jobbet visar indataparametrarna och Utdataström, förutom allmän information om jobbet och eventuella undantag. Historik innehåller meddelanden från utdataströmmen och Varningar och felströmmar förutom Utförlig dataström och Förloppsposter om Runbooken har konfigurerats att logga utförliga poster och förloppsposter.

Windows PowerShell

I Windows PowerShell kan du hämta utdata och meddelanden från Runbooken med cmdlet:en Get-SmaJobOutput. Denna cmdlet kräver ID för jobbet och har parametern Stream där du kan ange vilken dataström som ska returneras. Du kan ange Any för att returnera alla dataströ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