Partager via


Sortie et messages de Runbook

 

Publication: juin 2016

S'applique à: Windows Azure Pack for Windows Server, System Center 2012 R2 Orchestrator

La plupart des Runbooks Automation ont une forme de sortie semblable à un message d'erreur pour l'utilisateur, ou un objet complexe destiné à être consommé par un autre flux de travail. Windows PowerShell fournit plusieurs flux pour envoyer la sortie d'un flux de travail.Service Management Automation fonctionne différemment avec chacun de ces flux. Vous devez suivre les meilleures pratiques relatives à leur utilisation quand vous créez un Runbook.

Le tableau suivant fournit une brève description de chacun des flux et de leur comportement dans le Portail de gestion, aussi bien durant l'exécution d'un Runbook publié que pendant le test d'un Runbook. Vous trouverez plus de détails sur chaque flux dans les sections suivantes.

Flux

Description

Publié

Test

Sortie

Objets destinés à être consommés par d'autres Runbooks.

Écrit dans l'historique des travaux.

Affiché dans le volet de résultats des tests.

Avertissement

Message d'avertissement destiné à l'utilisateur.

Écrit dans l'historique des travaux.

Affiché dans le volet de résultats des tests.

Erreur

Message d'erreur destiné à l'utilisateur. Contrairement à une exception, le Runbook se poursuit après un message d'erreur par défaut.

Écrit dans l'historique des travaux.

Affiché dans le volet de résultats des tests.

Verbose

Messages qui fournissent des informations générales ou de résolution des problèmes.

Écrit dans l'historique des travaux uniquement si la journalisation documentée est activée pour le Runbook.

Affiché dans le volet de résultats des tests uniquement si $VerbosePreference a la valeur Continue dans le Runbook.

Progression

Enregistrements générés automatiquement avant et après chaque activité dans le Runbook. Le Runbook ne doit pas tenter de créer ses propres informations de progression dans la mesure où elles sont destinées à un utilisateur interactif.

Écrit dans l'historique des travaux uniquement si la journalisation de la progression est activée pour le Runbook.

Non affiché dans le volet de résultats des tests.

Débogage

Messages destinés à un utilisateur interactif. Ils ne doivent pas être utilisés dans les Runbooks.

Non écrit dans l'historique des travaux.

Non écrit dans le volet de résultats des tests.

Flux de sortie

Le flux de sortie est prévu pour la sortie des objets créés par un flux de travail quand il s'exécute correctement. Dans Automatisation, ce flux est principalement utilisé pour les objets destinés à être consommés par les Runbooks parents qui appellent le Runbook actif. Quand vous appelez un Runbook inline à partir d'un Runbook parent, il retourne les données du flux de sortie vers le parent. Vous ne devez utiliser le flux de sortie que pour communiquer des informations générales à l'utilisateur, si vous savez que le Runbook ne sera jamais appelé par un autre Runbook. Toutefois, il est généralement recommandé d'utiliser le Flux détaillé pour communiquer des informations générales à l'utilisateur.

Vous pouvez écrire des données dans le flux de sortie à l'aide de Write-Output ou en plaçant l'objet sur sa propre ligne dans le Runbook.

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

Sortie à partir d'une fonction

Quand vous écrivez dans le flux de sortie d'une fonction incluse dans votre Runbook, la sortie est repassée au Runbook. Si le Runbook affecte cette sortie à une variable, il n'est pas écrit dans le flux de sortie. Si vous écrivez dans d'autres flux à partir de la fonction, cela entraîne l'écriture du flux correspondant pour le Runbook.

Prenons l'exemple de Runbook suivant.

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"
   }
}

Le flux de sortie pour le travail de Runbook est :

Output outside of function

Le flux détaillé pour le travail de Runbook est :

Verbose outside of function
Verbose inside of function

La variable $functionOutput a la valeur :

Output inside of function

Déclaration du type de données de sortie

Un flux de travail peut spécifier le type de données de sa sortie à l'aide de l'attribut OutputType. Cet attribut n'a aucun effet au moment de l'exécution, mais il fournit une indication à l'auteur du Runbook au moment du design sur la sortie attendue du Runbook. Avec l'évolution de l'ensemble d'outils pour les Runbooks, la déclaration des types de données de sortie au moment du design est de plus en plus importante. Ainsi, il est recommandé d'inclure cette déclaration dans les Runbooks que vous créez.

L'exemple de Runbook suivant génère un objet string, et inclut une déclaration de son type de sortie. Si votre Runbook génère un tableau d'un certain type, vous devez toujours spécifier le type par opposition à un tableau du type.

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

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

Flux de messages

Contrairement au flux de sortie, les flux de messages sont destinés à communiquer des informations à l'utilisateur. Il existe plusieurs flux de messages pour les différents types d'informations, et chacun d'eux est traité de manière distincte par Automatisation.

Flux d'avertissement et d'erreur

Les flux d'erreur et d'avertissement sont conçus pour journaliser les problèmes qui se produisent dans un Runbook. Ils sont écrits dans l'historique des travaux quand un Runbook est exécuté, et sont inclus dans le volet de résultats des tests du Portail de gestion quand un Runbook est testé. Par défaut, le Runbook continue à s'exécuter après un avertissement ou une erreur. Vous pouvez spécifier que le Runbook doit être interrompu en cas d'avertissement ou d'erreur, en définissant une variable de préférence dans le Runbook avant de créer le message. Par exemple, pour interrompre un Runbook en cas d'erreur, à l'image d'une exception, affectez la valeur Stop à $ErrorActionPreference.

Créez un message d'avertissement ou d'erreur à l'aide des applets de commande Write-Warning ou Write-Error. Les activités peuvent également écrire dans ces flux.

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

Flux détaillé

Le flux de messages détaillés est destiné aux informations générales sur le fonctionnement du Runbook. Dans la mesure où le flux détaillé n'est pas disponible dans un Runbook, les messages détaillés doivent être utilisés pour les informations sur la résolution des problèmes. Par défaut, les messages détaillés provenant de Runbooks publiés ne sont pas stockés dans l'historique des travaux. Pour stocker les messages détaillés, configurez les Runbooks publiés afin de Journaliser les enregistrements détaillés sous l'onglet Configurer du Runbook dans le Portail de gestion. Dans la plupart des cas, conservez le paramètre par défaut afin de ne pas journaliser les enregistrements détaillés d'un Runbook pour des raisons de performances. Activez cette option uniquement pour résoudre les problèmes ou déboguer un Runbook.

Par défaut, la variable $VerbosePreference a la valeur SilentlyContinue. Il est inutile de changer cette variable dans un Runbook publié pour stocker les messages détaillés. Toutefois, si cette valeur est explicitement SilentlyContinue dans un Runbook publié, les messages détaillés ne sont pas stockés même si le Runbook est configuré pour journaliser les enregistrements détaillés.

Durant le test d'un Runbook, les messages détaillés ne s'affichent pas, même si le Runbook est configuré pour journaliser les enregistrements détaillés. Pour afficher des messages détaillés durant le test d'un Runbook, vous devez affecter la valeur Continue à la variable $VerbosePreference. Une fois cette variable définie, les messages détaillés s'affichent dans le volet de résultats des tests du Portail de gestion.

Créez un message détaillé à l'aide de l'applet de commande Write-Verbose.

#The following line creates a verbose message.

Write-Verbose –Message "This is a verbose message."

Flux de débogage

Le flux de débogage est destiné à un utilisateur interactif. Il ne doit pas être utilisé dans les Runbooks.

Informations de progression

Si vous configurez un Runbook pour journaliser les informations de progression (sous l'onglet Configurer du Runbook dans le Portail de gestion), un enregistrement est écrit dans l'historique des travaux avant et après l'exécution de chaque activité. Dans la plupart des cas, conservez le paramètre par défaut pour ne pas journaliser les informations de progression d'un Runbook afin d'optimiser les performances. Activez cette option uniquement pour résoudre les problèmes ou déboguer un Runbook. Quand vous testez un Runbook, les messages de progression ne s'affichent pas, même si le Runbook est configuré pour journaliser les informations de progression.

L'applet de commande Write-Progress n'est pas valide dans un Runbook, car elle est destinée à un utilisateur interactif.

Variables de préférence

Windows PowerShell utilise des variables de préférence pour déterminer comment répondre aux données envoyées aux différents flux de sortie. Vous pouvez définir ces variables dans un Runbook pour contrôler le mode de réponse aux données envoyées aux différents flux.

Le tableau suivant répertorie les variables de préférence qui peuvent être utilisées dans les Runbooks, ainsi que leurs valeurs valides et par défaut. Notez que ce tableau inclut uniquement les valeurs qui sont valides dans un Runbook. Les valeurs supplémentaires sont valides pour les variables de préférence quand elles sont utilisées dans Windows PowerShell en dehors de Service Management Automation.

Variable

Valeur par défaut

Valeurs valides

WarningPreference

Continue

Stop
Continue
SilentlyContinue

ErrorActionPreference

Continue

Stop
Continue
SilentlyContinue

VerbosePreference

SilentlyContinue

Stop
Continue
SilentlyContinue

Le tableau suivant répertorie le comportement des valeurs des variables de préférence qui sont valides dans les Runbooks.

Valeur

Comportement

Continue

Journalise le message et poursuit l'exécution du Runbook.

SilentlyContinue

Poursuit l'exécution du Runbook sans journaliser le message. Cela a pour effet d'ignorer le message.

Stop

Journalise le message et interrompt le Runbook.

Récupération de la sortie et des messages de Runbook

Portail de gestion

Vous pouvez afficher les détails d'une tâche de Runbook dans le Portail de gestion, sous l'onglet Travaux d'un Runbook. Le Résumé du travail affiche les paramètres d'entrée et le Flux de sortie, ainsi que des informations générales sur le travail et les exceptions survenues, le cas échéant. L'Historique inclut les messages du flux de sortie et les Flux d'avertissement et d'erreur. Il inclut également le Flux détaillé et les Informations de progression si le Runbook est configuré pour journaliser les enregistrements détaillés et les informations de progression.

Windows PowerShell

Dans Windows PowerShell, vous pouvez récupérer la sortie et les messages d'un Runbook à l'aide de l'applet de commande Get-SmaJobOutput. Cette applet de commande nécessite l'ID du travail. Par ailleurs, elle a un paramètre appelé Stream où vous spécifiez le flux à retourner. Vous pouvez spécifier Any pour retourner tous les flux du travail.

L'exemple suivant démarre un Runbook, puis attend qu'il se termine. À la fin de l'opération, le flux de sortie du Runbook est collecté à partir du travail.

$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