Condividi tramite


Messaggi e output del runbook

La maggior parte dei runbook di automazione avrà una forma di output, ad esempio un messaggio di errore per l'utente o un oggetto complesso che deve essere utilizzato da un altro flusso di lavoro. Windows PowerShell fornisce più flussi per inviare un output da un flusso di lavoro. Service Management Automation funziona in modo diverso con ognuno di questi flussi ed è consigliabile seguire le procedure consigliate per l'uso di ogni runbook quando si crea un runbook.

La tabella seguente fornisce una breve descrizione di ognuno dei flussi e del relativo comportamento nel portale di gestione sia per l'esecuzione di un Runbook pubblicato che per il test di un Runbook. Altre informazioni su ogni flusso sono disponibili nelle sezioni successive.

Stream Descrizione Pubblicazione completata   Test
Output Gli oggetti devono essere utilizzati da altri runbook. Scrivere la cronologia dei processi. Visualizzata nel pannello Output del Test.
Avviso Messaggio di avviso destinato all'utente. Scrivere la cronologia dei processi. Visualizzata nel pannello Output del Test.
Error Messaggio di errore previsto per l'utente. A differenza di un'eccezione, il runbook continua dopo un messaggio di errore per impostazione predefinita. Scrivere la cronologia dei processi. Visualizzata nel pannello Output del Test.
Verbose Messaggi che forniscono informazioni generali o relativi alla risoluzione dei problemi. Scritti nella cronologia del processo solo se è attivata la registrazione dettagliata per il runbook. Viene visualizzato nel riquadro di output del test solo se $VerbosePreference è impostato su Continue nel Runbook.
Avanzamento Record generati automaticamente prima e dopo ogni attività del runbook. Il runbook non deve tentare di creare record di stato perché sono destinati a un utente interattivo. Scritti nella cronologia processo solo se lo stato di avanzamento della registrazione è attivata per il runbook. Non sono visualizzati nel pannello Output del Test.
Debug Messaggi destinati a un utente interattivo. Non devono essere utilizzati nei runbook. Non scritti nella cronologia del processo. Non scritti nel pannello Output del Test.

Flusso di output

Il flusso di output è destinato all'output degli oggetti creati da un flusso di lavoro quando viene eseguito correttamente. In Automazione questo flusso viene usato principalmente per gli oggetti che devono essere utilizzati dai runbook padre che chiamano il runbook corrente. In caso di chiamata di un runbook inline da un runbook padre, vengono restituiti i dati dal flusso di output all'elemento padre. Utilizzare solo il flusso di output per comunicare informazioni generali all'utente se si è a conosce del fatto che il runbook non verrà mai chiamato da un altro runbook. Come procedura consigliata, tuttavia, è consigliabile in genere utilizzare il Flusso dettagliato per comunicare informazioni generali all'utente.

È possibile scrivere i dati per il flusso di output tramite Write-Output o inserendo l'oggetto nella relativa riga nel runbook.

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

Output da una funzione

Quando si scrive nel flusso di output in una funzione inclusa nel runbook, l'output viene passato nuovamente al runbook. Se il runbook assegna tale output a una variabile, non viene scritto nel flusso di output. La scrittura in eventuali altri flussi da all'interno della funzione scriverà nel flusso corrispondente per il runbook.

Si consideri il seguente esempio di 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"
   }
}

Il flusso di output per il processo di runbook sarebbe:

Output outside of function

Il flusso dettagliato per il processo di runbook sarebbe:

Verbose outside of function
Verbose inside of function

Il valore della variabile $functionOutput sarà:

Output inside of function

Dichiarare il tipo di dati di output

Un flusso di lavoro può specificare il tipo di dati del relativo output utilizzando l’ attributo OutputType. Questo attributo non ha alcun effetto in fase di esecuzione, ma offre un'indicazione all'autore del runbook in fase di progettazione dell’output previsto del runbook. Man mano che il set di strumenti per i runbook continuano ad evolvere, l'importanza della dichiarazione dei tipi di dati di output in fase di progettazione aumenterà. Di conseguenza è consigliabile includere questa dichiarazione in qualsiasi runbook creato.

Il runbook di esempio seguente restituisce un oggetto string e include una dichiarazione del tipo di output. Se il runbook restituisce una matrice di un determinato tipo, è comunque necessario specificare il tipo invece di una matrice del tipo.

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

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

Flussi di messaggi

A differenza del flusso di output, i flussi di messaggi sono utili per comunicare informazioni all'utente. Esistono più flussi di messaggi per diversi tipi di informazioni e ognuno viene gestito in modo diverso dall'automazione.

Selezionare la scheda necessaria per saperne di più su questi flussi di messaggi:

I flussi di errore e di avviso sono utili per registrare i problemi che si verificano in un runbook. Vengono scritti nella cronologia dei processi quando viene eseguito un runbook e vengono inclusi nel riquadro Output test nel portale di gestione quando viene testato un runbook. Per impostazione predefinita, il runbook continuerà l'esecuzione dopo un avviso o un errore. È possibile specificare che il runbook deve essere sospeso su un avviso o un errore impostando una variabile di preferenza nel runbook prima di creare il messaggio. Ad esempio, per far sì che un runbook venga sospeso in caso di errore come farebbe un'eccezione, impostare $ErrorActionPreference su Stop.

Creare un avviso o un messaggio di errore usando il cmdlet Write-Warning o Write-Error. Anche le attività possono scrivere tali flussi.

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

Record di stato

Se si configura un Runbook per la registrazione dei record di stato (nella scheda Configura del Runbook nel portale di gestione), nella cronologia processo verrà scritto un record prima e dopo l'esecuzione di ogni attività. Nella maggior parte dei casi, è consigliabile mantenere l'impostazione predefinita che non registra record dettagliati per un runbook per massimizzare le prestazioni. Attivare questa opzione solo per risolvere i problemi o eseguire il debug di un runbook. Durante il test di un runbook, i messaggi di stato non vengono visualizzati anche se il runbook è configurato per registrare i record di stato.

Il cmdlet Write-Progress non è valido in un runbook perché è destinato all'uso con un utente interattivo.

Variabili di preferenza

Windows PowerShell utilizza le variabili di preferenza per stabilire come rispondere ai dati inviati ai diversi flussi di output. È possibile impostare queste variabili in un runbook per controllare la modalità di risposta ai dati inviati in diversi flussi.

La tabella seguente elenca le variabili di preferenza che possono essere utilizzate nei runbook con i relativi valori validi e predefiniti.

Nota

Questa tabella include solo i valori validi in un runbook. I valori aggiuntivi sono validi per le variabili di preferenza quando vengono usate in Windows PowerShell all'esterno di Service Management Automation.

Variabile Valore predefinito Valori validi
WarningPreference Continua Arresta
Continua
SilentlyContinue
ErrorActionPreference Continua Arresta
Continua
SilentlyContinue
VerbosePreference SilentlyContinue Arresta
Continua
SilentlyContinue

Nella tabella seguente è elencato il comportamento dei valori delle variabili di preferenza valide nei runbook.

Valore Comportamento
Continua Registra il messaggio e continua l'esecuzione del runbook.
SilentlyContinue Continua l'esecuzione del runbook senza registrazione del messaggio. Questo ha l'effetto di ignorare il messaggio.
Arresta Registra il messaggio e sospende il runbook.

Recupero dei messaggi e dell'output del Runbook

Portale di gestione

È possibile visualizzare i dettagli di un processo del Runbook nel portale di gestione dalla scheda Processi di un Runbook. Il Riepilogo del processo visualizzerà i parametri di input e il Output Stream oltre alle informazioni generali sul processo e alle eventuali eccezioni, nel caso in cui si siano verificate. La cronologia includerà i messaggi dal flusso di output e dai flussi di avviso ed errore in aggiunta al flusso dettagliato e ai record di avanzamento, se il runbook è configurato per la registrazione di record dettagliati e di avanzamento.

Windows PowerShell

In Windows PowerShell è possibile recuperare i messaggi e l'output di un Runbook con il cmdlet Get-SmaJobOutput . Questo cmdlet richiede l'ID del processo e contiene un parametro denominato Stream che consente di specificare il flusso da restituire. È possibile specificare Any per restituire tutti i flussi per il processo.

Nell'esempio seguente viene avviato un runbook figlio e si attende il suo completamento. Una volta completato, il relativo output viene raccolto dal processo.

$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

Passaggi successivi

Creare runbook di automazione.