Share via


Messaggi e output del runbook

Importante

Questa versione di Service Management Automation (SMA) ha raggiunto la fine del supporto. È consigliabile eseguire l'aggiornamento a SMA 2022.

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 flusso durante la creazione di 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 Pubblicato 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.
Errore 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.
Dettagliato 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.
Progress Record generati automaticamente prima e dopo ogni attività del runbook. Il runbook non deve tentare di creare i propri 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. Quando si chiama un runbook inline da un runbook padre, vengono restituiti i dati del flusso di output relativi 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 da Automazione.

Selezionare la scheda necessaria per altre informazioni 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 di 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 in caso di avviso o errore impostando una variabile di preferenza nel runbook prima della creazione del messaggio. Ad esempio, per fare in modo che un runbook venga sospeso in caso di errore, come se si trattasse di 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 Default Value Valori validi
WarningPreference Continue Arresto
Continue
SilentlyContinue
ErrorActionPreference Continue Arresto
Continue
SilentlyContinue
VerbosePreference SilentlyContinue Arresto
Continue
SilentlyContinue

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

valore Comportamento
Continue 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.
Arresto 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 Stream output oltre a informazioni generali sul processo e eventuali eccezioni se si sono verificati. La cronologia includerà messaggi dalla Stream di output e dai flussi di avviso e di errore oltre al Stream dettagliato e record di stato se il runbook è configurato per registrare i record dettagliati e di stato.

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