Sdílet prostřednictvím


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

Další kroky

Vytváření runbooků pro automatizaci