Zprávy a výstup runbooku
Většina runbooků automatizace bude mít určitou formu výstupu, například chybovou zprávu pro uživatele nebo složitý objekt, který má být spotřebován jiným pracovním postupem. Windows PowerShell poskytuje více datových proudů pro odesílání výstupu z pracovního postupu. Service Management Automation funguje s každým z těchto datových proudů jinak a měli byste postupovat podle osvědčených postupů při vytváření runbooku.
Následující tabulka obsahuje stručný popis jednotlivých datových proudů a jejich chování na portálu pro správu jak při spuštění publikovaného runbooku, tak při testování runbooku. Další podrobnosti o jednotlivých datových proudech najdete v následujících částech.
Stream | Popis | Publikováno | Test |
---|---|---|---|
Výstup | Objekty, které mají být spotřebovány jinými runbooky. | Zapsáno do historie úloh. | Zobrazí se v podokně výstupu testu. |
Upozorňující | Zpráva s upozorněním určená pro uživatele | Zapsáno do historie úloh. | Zobrazí se v podokně výstupu testu. |
Chyba | Chybová zpráva určená pro uživatele Na rozdíl od výjimky runbook ve výchozím nastavení pokračuje za chybovou zprávou. | Zapsáno do historie úloh. | Zobrazí se v podokně výstupu testu. |
Podrobnosti | Zprávy s obecnými informacemi nebo informacemi o řešení potíží | Zapsáno do historie úloh pouze v případě, že je pro runbook zapnuté podrobné protokolování. | Zobrazí se v podokně Výstup testu pouze v případě, že $VerbosePreference je v runbooku nastavena na Pokračovat . |
Průběh | Záznamy se automaticky generují před a po každé aktivitě v runbooku. Runbook by se neměl pokoušet vytvořit vlastní záznamy o průběhu, protože jsou určené pro interaktivního uživatele. | Zapsáno do historie úloh pouze v případě, že je protokolování průběhu pro runbook zapnuté. | Nezobrazuje se v podokně výstupu testu. |
Ladění | Zprávy určené pro interaktivního uživatele V runboocích by se nemělo používat. | Není zapsáno do historie úloh. | Není zapsáno do podokna výstupu testu. |
Výstupní datový proud
Výstupní datový proud je určený pro výstup objektů vytvořených pracovním postupem při správném spuštění. Ve službě Automation se tento datový proud primárně používá pro objekty, které mají být využívány nadřazenými runbooky, které volají aktuální runbook. Když voláte runbook vložený z nadřazeného runbooku, vrátí data z výstupního datového proudu do nadřazeného objektu. Pokud víte, že runbook nikdy nebude volat jiný runbook, měli byste použít výstupní datový proud ke komunikaci s uživateli obecné informace. Osvědčeným postupem je ale obvykle použití podrobného streamu ke sdělení obecných informací uživateli.
Data můžete zapisovat do výstupního datového proudu pomocí write-Output nebo vložením objektu na vlastní řádek do runbooku.
#The following lines both write an object to the output stream.
Write-Object -InputObject $object
$object
Výstup funkce
Při zápisu do výstupního datového proudu ve funkci, která je součástí runbooku, se výstup předá zpět do runbooku. Pokud runbook přiřadí tento výstup proměnné, pak se do výstupního datového proudu nezapíše. Zápis do jiných datových proudů z funkce se zapíše do odpovídajícího datového proudu runbooku.
Podívejte se na následující ukázkový 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"
}
}
Výstupní datový proud úlohy runbooku by byl:
Output outside of function
Podrobný datový proud pro úlohu runbooku by byl:
Verbose outside of function
Verbose inside of function
Proměnná $functionOutput by měla hodnotu:
Output inside of function
Deklarace výstupního datového typu
Pracovní postup může určit datový typ výstupu pomocí atributu OutputType. Tento atribut nemá žádný vliv během běhu, ale v době návrhu očekávaného výstupu runbooku poskytuje autorovi runbooku indikaci. S tím, jak se sada nástrojů pro runbooky stále vyvíjí, se důležitost deklarování výstupních datových typů v době návrhu zvýší. Proto je osvědčeným postupem zahrnout tuto deklaraci do všech runbooků, které vytvoříte.
Následující ukázkový runbook zobrazí výstup řetězcového objektu a obsahuje deklaraci jeho výstupního typu. Pokud runbook vypíše pole určitého typu, měli byste typ zadat na rozdíl od pole typu.
Workflow Test-Runbook
{
[OutputType([string])]
$output = "This is some string output."
Write-Output $output
}
Streamy zpráv
Na rozdíl od výstupního datového proudu jsou datové proudy zpráv určené ke sdělení informací uživateli. Existuje několik datových proudů zpráv pro různé druhy informací a každá z nich je zpracována službou Automation odlišně.
Pokud chcete získat další informace o těchto datových proudech zpráv, vyberte požadovanou kartu:
Datové proudy Upozornění a Chyba jsou určeny k protokolování problémů, ke kterým dochází v runbooku. Při spuštění runbooku se zapisují do historie úloh a při testování runbooku se zahrnou do podokna výstupu testu na portálu pro správu. Runbook se ve výchozím nastavení bude dál spouštět po upozornění nebo chybě. Před vytvořením zprávy můžete určit, že by se sada Runbook měla pozastavit v upozornění nebo chybě nastavením proměnné předvoleb v runbooku. Pokud například chcete, aby se runbook pozastavil na chybě, protože by došlo k výjimce, nastavte $ErrorActionPreference zastavit.
Vytvořte upozornění nebo chybovou zprávu pomocí rutiny Write-Warning nebo Write-Error . Aktivity se také můžou zapisovat do těchto datových proudů.
#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."
Záznamy průběhu
Pokud nakonfigurujete runbook tak, aby protokolovat záznamy o průběhu (na kartě Konfigurace runbooku na portálu pro správu), zapíše se záznam do historie úloh před a po spuštění každé aktivity. Ve většiněpřípadůch Tuto možnost zapněte pouze pro řešení potíží nebo ladění runbooku. Při testování runbooku se zprávy o průběhu nezobrazují, ani když je runbook nakonfigurovaný tak, aby protokoloval záznamy průběhu.
Rutina Write-Progress není v runbooku platná, protože je určená pro použití s interaktivním uživatelem.
Proměnné předvoleb
Windows PowerShell používá proměnné předvoleb k určení, jak reagovat na data odesílaná do různých výstupních datových proudů. Tyto proměnné můžete v runbooku nastavit, abyste mohli řídit, jak bude reagovat na data odesílaná do různých datových proudů.
Následující tabulka uvádí proměnné předvoleb, které lze použít v runboocích s platnými a výchozími hodnotami.
Poznámka:
Tato tabulka obsahuje pouze hodnoty platné v runbooku. Další hodnoty jsou platné pro proměnné předvoleb, pokud se používají v prostředí Windows PowerShell mimo službu Service Management Automation.
Proměnná | Výchozí hodnota | Platné hodnoty |
---|---|---|
WarningPreference | Pokračovat | Zastavit Pokračovat<\br> \SilentlyContinue |
ErrorActionPreference | Pokračovat | Zastavit Pokračovat SilentlyContinue |
Podrobnápreference | SilentlyContinue | Zastavit Pokračovat SilentlyContinue |
Následující tabulka uvádí chování hodnot proměnných předvoleb, které jsou platné v runboocích.
Hodnota | Chování |
---|---|
Pokračovat | Zaprokoluje zprávu a pokračuje v provádění runbooku. |
SilentlyContinue | Pokračuje v provádění runbooku bez protokolování zprávy. To má vliv na ignorování zprávy. |
Zastavit | Zaznamená zprávu a pozastaví runbook. |
Načítání výstupu a zpráv runbooku
Portál pro správu
Podrobnosti úlohy runbooku můžete zobrazit na portálu pro správu na kartě Úlohy runbooku. Souhrn úlohy zobrazí kromě obecných informací o úloze i všechny výjimky, pokud k nim došlo, vstupní parametry a výstupní stream. Historie bude obsahovat zprávy z výstupního streamu a upozornění a chybových proudů kromě podrobného streamu a záznamů průběhu, pokud je runbook nakonfigurovaný tak, aby protokoloval podrobné a průběhové záznamy.
Windows PowerShell
Ve Windows PowerShellu můžete načíst výstup a zprávy z runbooku pomocí rutiny Get-SmaJobOutput . Tato rutina vyžaduje ID úlohy a má parametr s názvem Stream , ve kterém určíte, který datový proud se má vrátit. Pro vrácení všech datových proudů pro úlohu můžete zadat libovolnou hodnotu.
Následující příklad spustí ukázkový runbook a pak počká, až se dokončí. Po dokončení se z úlohy shromažďuje jeho výstupní datový proud.
$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