Delen via


Runbookuitvoer en -berichten

 

Gepubliceerd: juni 2016

Van toepassing op: Windows Azure Pack for Windows Server, System Center 2012 R2 Orchestrator

De meeste Automation-runbooks hebben een vorm van uitvoer, zoals een foutbericht voor de gebruiker of een complex object dat bedoeld is voor verbruik door een andere werkstroom. Windows PowerShell biedt meerdere stromen om uitvoer vanuit een werkstroom te verzenden. Automatisering van servicebeheer werkt met elk van deze stromen op een andere wijze en u moet u de aanbevolen procedures voor het gebruik van deze stromen volgen wanneer u een runbook maakt.

De volgende tabel bevat een korte beschrijving van elk van de stromen en hun gedrag in de beheerportal bij het uitvoeren van een gepubliceerd runbook en bij het testen van een runbook. Meer informatie over elke stroom wordt verstrekt in de volgende secties.

Stroom

Beschrijving

Gepubliceerd

Test

Uitvoer

Objecten die zijn bedoeld om te worden verbruikt door andere runbooks.

Wordt naar de taakgeschiedenis geschreven.

Wordt in het deelvenster Testuitvoer weergegeven.

Waarschuwing

Waarschuwingsbericht bedoeld voor de gebruiker.

Wordt naar de taakgeschiedenis geschreven.

Wordt in het deelvenster Testuitvoer weergegeven.

Fout

Foutbericht bedoeld voor de gebruiker. Het runbook blijft standaard doorgaan na een foutbericht, wat niet het geval is na een uitzondering.

Wordt naar de taakgeschiedenis geschreven.

Wordt in het deelvenster Testuitvoer weergegeven.

Uitgebreid

Berichten waarin algemene informatie of probleemoplossingsinformatie wordt verstrekt.

Wordt alleen naar de taakgeschiedenis geschreven als uitgebreide logboekregistratie is ingeschakeld voor het runbook.

Wordt alleen weergegeven in het deelvenster Testuitvoer als $VerbosePreference is ingesteld op Doorgaan in het runbook.

Voortgang

Records die automatisch worden gegenereerd voor en na elke activiteit in het runbook. Het runbook moet niet proberen om eigen voortgangsrecords te maken omdat deze zijn bedoeld voor een interactieve gebruiker.

Wordt alleen naar de taakgeschiedenis geschreven als voortgangslogboekregistratie is ingeschakeld voor het runbook.

Wordt niet in het deelvenster Testuitvoer weergegeven.

Fouten opsporen

Berichten die zijn bedoeld voor een interactieve gebruiker. Mogen niet worden gebruikt in runbooks.

Worden niet naar taakgeschiedenis geschreven.

Worden niet naar het deelvenster Testuitvoer geschreven.

Uitvoerstroom

De uitvoerstroom is bedoeld voor de uitvoer van objecten die zijn gemaakt door een werkstroom wanneer deze correct wordt uitgevoerd. In Automatisering wordt deze stroom voornamelijk gebruikt voor objecten die zijn bedoeld om te worden verbruikt door bovenliggende runbooks die het huidige runbook aanroepen. Wanneer u een runbook inline aanroept vanuit een bovenliggend runbook, worden gegevens uit de uitvoerstroom naar het bovenliggende runbook geretourneerd. Gebruik de uitvoerstroom alleen om algemene informatie terug naar de gebruiker te communiceren als u weet dat het runbook nooit door een ander runbook zal worden aangeroepen. Het wordt echter aanbevolen om doorgaans de Uitgebreide stroom te gebruiken om algemene informatie naar de gebruiker te communiceren.

U kunt gegevens naar de uitvoerstroom schrijven met behulp van Write-Output of door het object op een eigen regel in het runbook te plaatsen.

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

Uitvoer van een functie

Wanneer u schrijft naar de uitvoerstroom in een functie die in uw runbook is opgenomen, wordt de uitvoer terug naar het runbook doorgegeven. Als het runbook die uitvoer toewijst aan een variabele, wordt deze niet naar de uitvoerstroom geschreven. Schrijven naar andere stromen vanuit de functie, heeft tot gevolg dat er naar de bijbehorende stroom voor het runbook wordt geschreven.

Bekijk het volgende voorbeeldrunbook.

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

De uitvoerstroom voor de runbooktaak zou als volgt zijn:

Output outside of function

De uitgebreide stroom voor de runbooktaak zou als volgt zijn:

Verbose outside of function
Verbose inside of function

De variabele $functionOutput heeft dan de waarde:

Output inside of function

Gegevenstype uitvoer declareren

Een werkstroom kan het gegevenstype van de uitvoer opgeven met behulp van het kenmerk OutputType. Dit kenmerk heeft geen effect tijdens runtime, maar het geeft de auteur van het runbook een aanwijzing bij het ontwerpen van de verwachte uitvoer van het runbook. Aangezien de toolset voor runbooks zich blijft ontwikkelen, zal het declareren van uitvoergegevenstypen in de ontwerpfase steeds belangrijker worden. Als gevolg daarvan wordt aanbevolen om deze declaratie op te nemen in runbooks die u maakt.

Het volgende voorbeeldrunbook voert een tekenreeksobject uit en bevat een declaratie van het uitvoertype. Als uw runbook een matrix van een bepaald type uitvoert, moet u nog steeds het type opgeven in tegenstelling tot een matrix van het type.

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

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

Berichtstromen

In tegenstelling tot de uitvoerstroom zijn berichtstromen bedoeld om informatie naar de gebruiker te communiceren. Er zijn meerdere berichtstromen voor verschillende soorten informatie en elke berichtstroom wordt anders verwerkt door Automatisering.

Waarschuwings- en foutstromen

De waarschuwings- en foutstromen zijn bedoeld om problemen die zich in een runbook voordoen, in een logboek te registreren. Ze worden naar de taakgeschiedenis geschreven wanneer een runbook wordt uitgevoerd, en ze worden opgenomen in het deelvenster Testuitvoer in de beheerportal wanneer een runbook wordt getest. Het runbook blijft standaard in uitvoering na een waarschuwing of fout. U kunt opgeven dat het runbook na een waarschuwing of fout moet worden onderbroken door het instellen van een voorkeursvariabele in het runbook voordat het bericht wordt gemaakt. Als een runbook bijvoorbeeld net als na een uitzondering moet worden onderbroken na een fout, stelt u $ErrorActionPreference in op Stoppen.

Maak een waarschuwings- of foutbericht met de cmdlet Write-Warning of Write-Error. Activiteiten mogen ook naar deze stromen schrijven.

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

Uitgebreide stroom

De uitgebreide berichtenstroom is bedoeld voor algemene informatie over de runbookwerking. Aangezien de foutopsporingsstroom niet beschikbaar is in een runbook, moeten uitgebreide berichten worden gebruikt voor probleemoplossingsinformatie. Uitgebreide berichten uit gepubliceerde runbooks worden standaard niet opgeslagen in de taakgeschiedenis. Als u uitgebreide berichten wilt opslaan, configureert u gepubliceerde runbooks voor Uitgebreide records in logboek registreren op het tabblad Configureren van het runbook in de beheerportal. In de meeste gevallen moet u voor een runbook de standaardinstelling voor het niet registreren van uitgebreide records behouden om prestatieredenen. Schakel deze optie alleen in voor probleemoplossing of foutopsporing van een runbook.

De variabele $VerbosePreference heeft de standaardwaarde SilentlyContinue. U hoeft deze variabele niet te wijzigen in een gepubliceerd runbook als u wilt dat uitgebreide berichten worden opgeslagen. Als deze waarde in een gepubliceerd runbook echter is ingesteld op SilentlyContinue, worden uitgebreide berichten niet opgeslagen, zelfs niet als het runbook is geconfigureerd voor logboekregistratie van uitgebreide records.

Bij het testen van een runbook worden geen uitgebreide berichten weergegeven, zelfs niet als het runbook is geconfigureerd voor logboekregistratie van uitgebreide records. Als u wilt dat tijdens het testen van een runbook uitgebreide berichten worden weergegeven, moet u de variabele $VerbosePreference instellen op Doorgaan. Als deze variabele is ingesteld, wordt uitgebreide berichten weergegeven in het deelvenster Testuitvoer van de beheerportal.

Maak een uitgebreid bericht met de cmdlet Write-Verbose.

#The following line creates a verbose message.

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

Foutopsporingsstroom

De foutopsporingsstroom is bedoeld voor gebruik met een interactieve gebruiker en mag niet worden gebruikt in runbooks.

Voortgangsrecords

Als u een runbook configureert voor logboekregistratie van voortgangsrecords (op het tabblad Configureren van het runbook in de beheerportal), wordt een record naar de taakgeschiedenis geschreven voordat en nadat elke activiteit is uitgevoerd. In de meeste gevallen moet u de standaardinstelling voor het niet registreren van voortgangsrecords voor een runbook behouden om de prestaties te maximaliseren. Schakel deze optie alleen in voor probleemoplossing of foutopsporing van een runbook. Bij het testen van een runbook worden voortgangsberichten niet weergegeven, zelfs als het runbook is geconfigureerd voor logboekregistratie van voortgangsrecords.

De cmdlet Write-Progress is niet geldig in een runbook, omdat deze is bedoeld voor gebruik met een interactieve gebruiker.

Voorkeursvariabelen

Windows PowerShell maakt gebruik van voorkeursvariabelen om te bepalen hoe moet worden gereageerd op gegevens die worden verzonden naar verschillende uitvoerstromen. U kunt deze variabelen in een runbook instellen om te bepalen hoe het runbook reageert op gegevens die worden verzonden naar verschillende stromen.

De volgende tabel bevat een opsomming van de voorkeursvariabelen die kunnen worden gebruikt in runbooks met hun geldige waarden en hun standaardwaarden. Houd er rekening mee dat deze tabel alleen de waarden bevat die geldig zijn in een runbook. Er zijn aanvullende waarden geldig voor de voorkeursvariabelen bij gebruik in Windows PowerShell buiten Automatisering van servicebeheer.

Variabele

Standaardwaarde

Geldige waarden

WarningPreference

Doorgaan

Stop
Doorgaan
SilentlyContinue

ErrorActionPreference

Doorgaan

Stop
Doorgaan
SilentlyContinue

VerbosePreference

SilentlyContinue

Stop
Doorgaan
SilentlyContinue

De volgende tabel bevat een opsomming van de werking van de voorkeursvariabelewaarden die geldig zijn in runbooks.

Waarde

Gedrag

Doorgaan

Registreert het bericht en blijft het runbook uitvoeren.

SilentlyContinue

Blijft het runbook uitvoeren zonder het bericht te registreren. Dit heeft tot gevolg dat het bericht wordt genegeerd.

Stoppen

Het bericht wordt geregistreerd en het runbook wordt onderbroken.

Runbookuitvoer en -berichten ophalen

Beheerportal

U kunt de details van een runbooktaak weergeven in de beheerportal vanaf het tabblad Taken van een runbook. In de Samenvatting van de taak worden de invoerparameters en de Uitvoerstroom weergegeven naast algemene informatie over de taak en eventuele uitzonderingen. De Geschiedenis bevat berichten van de uitvoerstroom en Waarschuwings- en foutstromen naast de Uitgebreide stroom en Voortgangsrecords als het runbook is geconfigureerd voor logboekregistratie van uitgebreide records en voortgangsrecords.

Windows PowerShell

In Windows PowerShell kunt u uitvoer en berichten uit een runbook ophalen met de cmdlet Get-SmaJobOutput. Deze cmdlet vereist de ID van de taak en heeft een parameter genaamd Stroom waarin u opgeeft welke stroom moet worden geretourneerd. U kunt Alle opgeven om alle stromen voor de taak te retourneren.

In het volgende voorbeeld wordt een voorbeeldrunbook gestart en wordt gewacht tot dit is voltooid. Zodra het is voltooid, wordt de uitvoerstroom van de taak verzameld.

$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