Dane wyjściowe i komunikaty elementu runbook
Większość elementów Runbook automatyzacji będzie mieć jakąś formę danych wyjściowych, takich jak komunikat o błędzie dla użytkownika lub złożony obiekt, który ma być używany przez inny przepływ pracy. Program Windows PowerShell udostępnia wiele strumieni do wysyłania danych wyjściowych z przepływu pracy. Usługa Service Management Automation współdziała z każdym z tych strumieni w inny sposób i należy postępować zgodnie z najlepszymi rozwiązaniami dotyczącymi sposobu używania każdego z nich podczas tworzenia elementu Runbook.
Poniższa tabela zawiera krótki opis każdego strumienia i ich zachowania w portalu zarządzania zarówno podczas uruchamiania opublikowanego elementu Runbook, jak i podczas testowania elementu Runbook. Dalsze szczegółowe informacje na temat każdego strumienia znajdują się w kolejnych sekcjach.
Stream | opis | Opublikowany | Test |
---|---|---|---|
Wyjście | Obiekty przeznaczone do korzystania z innych elementów Runbook. | Zapisana w historii zadań. | Wyświetlane w okienku Danych wyjściowych testu. |
Ostrzeżenie | Komunikat ostrzegawczy przeznaczony dla użytkownika. | Zapisana w historii zadań. | Wyświetlane w okienku Danych wyjściowych testu. |
Błąd | Komunikat o błędzie przeznaczony dla użytkownika. W przeciwieństwie do wyjątku element Runbook jest domyślnie kontynuowany po komunikacie o błędzie. | Zapisana w historii zadań. | Wyświetlane w okienku Danych wyjściowych testu. |
Pełne informacje | Komunikaty dostarczające ogólne informacje lub informacje dotyczące rozwiązywania problemów. | Zapisywanie w historii zadań tylko wtedy, gdy pełne rejestrowanie jest włączone dla elementu Runbook. | Wyświetlane w okienku Dane wyjściowe testu tylko wtedy, gdy $VerbosePreference jest ustawiona na Kontynuuj w elemencie Runbook. |
Postęp | Rekordy generowane automatycznie przed i po każdym działaniu w elemecie Runbook. Element Runbook nie powinien podejmować próby utworzenia własnych rekordów postępu, ponieważ są one przeznaczone dla użytkownika interaktywnego. | Zapisywanie w historii zadań tylko wtedy, gdy rejestrowanie postępu jest włączone dla elementu Runbook. | Nie są wyświetlane w okienku danych wyjściowych testu. |
Debugowanie | Komunikaty przeznaczone dla użytkownika interakcyjnego. Nie należy używać w elementach Runbook. | Nie zapisano w historii zadań. | Nie zapisano w okienku danych wyjściowych testów. |
Strumień wyjściowy
Strumień wyjściowy jest przeznaczony dla danych wyjściowych obiektów utworzonych przez przepływ pracy, gdy działa prawidłowo. W usłudze Automation ten strumień jest używany głównie dla obiektów przeznaczonych do użycia przez nadrzędne elementy Runbook, które nazywają bieżący element Runbook. Po wywołaniu elementu Runbook w tekście z nadrzędnego elementu Runbook zwraca on dane ze strumienia wyjściowego do elementu nadrzędnego. Strumienia wyjściowego należy używać tylko do przekazywania ogólnych informacji do użytkownika, jeśli wiesz, że element Runbook nigdy nie będzie wywoływany przez inny element Runbook. Najlepszym rozwiązaniem jest jednak użycie usługi Verbose Stream do przekazywania ogólnych informacji użytkownikowi.
Dane można zapisywać w strumieniu wyjściowym przy użyciu funkcji Write-Output lub umieszczając obiekt we własnym wierszu w elemecie Runbook.
#The following lines both write an object to the output stream.
Write-Output -InputObject $object
$object
Dane wyjściowe z funkcji
Po zapisie do strumienia wyjściowego w funkcji dołączonej do elementu Runbook dane wyjściowe są przekazywane z powrotem do elementu Runbook. Jeśli element Runbook przypisuje te dane wyjściowe do zmiennej, nie jest zapisywany w strumieniu wyjściowym. Zapisywanie w innych strumieniach z poziomu funkcji spowoduje zapisanie odpowiedniego strumienia dla elementu Runbook.
Rozważmy następujący przykładowy element 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"
}
}
Strumień wyjściowy zadania elementu Runbook będzie:
Output outside of function
Pełny strumień zadania elementu Runbook to:
Verbose outside of function
Verbose inside of function
Zmienna $functionOutput będzie miała wartość:
Output inside of function
Deklarowanie typu danych wyjściowych
Przepływ pracy może określać typ danych wyjściowych przy użyciu atrybutu OutputType. Ten atrybut nie ma wpływu w czasie wykonywania, ale zawiera wskazanie dla autora elementu Runbook w czasie projektowania oczekiwanych danych wyjściowych elementu Runbook. W miarę rozwoju zestawu narzędzi dla elementów Runbook znaczenie deklarowania typów danych wyjściowych w czasie projektowania zwiększa się. W związku z tym najlepszym rozwiązaniem jest uwzględnienie tej deklaracji we wszystkich utworzonych elementach Runbook.
Poniższy przykładowy element Runbook generuje obiekt ciągu i zawiera deklarację typu danych wyjściowych. Jeśli element Runbook generuje tablicę określonego typu, nadal należy określić typ, w przeciwieństwie do tablicy typu.
Workflow Test-Runbook
{
[OutputType([string])]
$output = "This is some string output."
Write-Output $output
}
Strumienie komunikatów
W przeciwieństwie do strumienia wyjściowego strumienie komunikatów mają na celu przekazywanie informacji użytkownikowi. Istnieje wiele strumieni komunikatów dla różnych rodzajów informacji, a każda z nich jest obsługiwana inaczej przez usługę Automation.
Wybierz kartę wymaganą, aby dowiedzieć się więcej o tych strumieniach komunikatów:
Strumienie ostrzeżeń i błędów są przeznaczone do rejestrowania problemów występujących w elemecie Runbook. Są one zapisywane w historii zadań po wykonaniu elementu Runbook i są uwzględniane w okienku danych wyjściowych testów w portalu zarządzania po przetestowaniu elementu Runbook. Domyślnie element Runbook będzie kontynuować wykonywanie po ostrzeżeniu lub błędzie. Można określić, że element Runbook powinien zostać zawieszony w ostrzeżeniu lub błędzie, ustawiając zmienną preferencji w elemecie Runbook przed utworzeniem komunikatu. Aby na przykład spowodować wstrzymanie elementu Runbook w przypadku błędu, ponieważ byłby to wyjątek, ustaw $ErrorActionPreference wartość Zatrzymaj.
Utwórz komunikat ostrzegawczy lub komunikat o błędzie przy użyciu polecenia cmdlet Write-Warning lub Write-Error . Działania mogą również zapisywać w tych strumieniach.
#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."
Rekordy postępu
Jeśli skonfigurujesz element Runbook do rejestrowania rekordów postępu (na karcie Konfigurowanie elementu Runbook w portalu zarządzania), rekord zostanie zapisany w historii zadań przed uruchomieniem i po każdym działaniu. W większości przypadków należy zachować domyślne ustawienie nie rejestrowania rekordów postępu dla elementu Runbook, aby zmaksymalizować wydajność. Włącz tę opcję tylko w celu rozwiązywania problemów lub debugowania elementu Runbook. Podczas testowania elementu Runbook komunikaty postępu nie są wyświetlane, nawet jeśli element Runbook jest skonfigurowany do rejestrowania rekordów postępu.
Polecenie cmdlet Write-Progress nie jest prawidłowe w elemecie Runbook, ponieważ jest przeznaczone do użytku z użytkownikiem interaktywnym.
Zmienne preferencji
Program Windows PowerShell używa zmiennych preferencji do określania sposobu reagowania na dane wysyłane do różnych strumieni wyjściowych. Te zmienne można ustawić w elemecie Runbook, aby kontrolować sposób reagowania na dane wysyłane do różnych strumieni.
W poniższej tabeli wymieniono zmienne preferencji, które mogą być używane w elementach Runbook z prawidłowymi i domyślnymi wartościami.
Uwaga
Ta tabela zawiera tylko wartości, które są prawidłowe w elemecie Runbook. Dodatkowe wartości są prawidłowe dla zmiennych preferencji używanych w programie Windows PowerShell poza usługą Service Management Automation.
Zmienna | Wartość domyślna | Prawidłowe wartości |
---|---|---|
OstrzeżeniePreference | Kontynuuj | Zatrzymaj Kontynuuj<\br> \SilentlyContinue |
ErrorActionPreference | Kontynuuj | Zatrzymaj Kontynuuj SilentlyContinue |
Pełnepreferencja | SilentlyContinue | Zatrzymaj Kontynuuj SilentlyContinue |
W poniższej tabeli wymieniono zachowanie wartości zmiennych preferencji, które są prawidłowe w elementach Runbook.
Wartość | Zachowanie |
---|---|
Kontynuuj | Rejestruje komunikat i kontynuuje wykonywanie elementu Runbook. |
SilentlyContinue | Kontynuuje wykonywanie elementu Runbook bez rejestrowania komunikatu. Ma to wpływ na ignorowanie komunikatu. |
Zatrzymaj | Rejestruje komunikat i zawiesza element Runbook. |
Pobieranie danych wyjściowych i komunikatów elementu Runbook
Portal zarządzania
Szczegóły zadania elementu Runbook można wyświetlić w portalu zarządzania na karcie Zadania elementu Runbook. Podsumowanie zadania spowoduje wyświetlenie parametrów wejściowych i strumienia wyjściowego oprócz ogólnych informacji o zadaniu i wszelkich wyjątkach, jeśli wystąpiły. Historia będzie zawierać komunikaty ze strumienia wyjściowego oraz strumieni ostrzeżeń i błędów oprócz pełnych rekordów strumieni i postępu, jeśli element Runbook jest skonfigurowany do rejestrowania pełnych i postępów rekordów.
Windows PowerShell
W programie Windows PowerShell można pobierać dane wyjściowe i komunikaty z elementu Runbook przy użyciu polecenia cmdlet Get-SmaJobOutput . To polecenie cmdlet wymaga identyfikatora zadania i ma parametr o nazwie Stream , w którym określasz strumień, który ma być zwracany. Możesz określić dowolne , aby zwrócić wszystkie strumienie dla zadania.
Poniższy przykład uruchamia przykładowy element Runbook, a następnie czeka na jego ukończenie. Po zakończeniu jego strumień wyjściowy jest zbierany z zadania.
$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
Następne kroki
Tworzenie elementów Runbook automatyzacji.