Traitement en pipeline

 

Sapplique à :Exchange Server 2013

L’utilisation de pipelines dans Exchange Management Shell est l’action d’une cmdlet qui utilise la sortie d’une autre cmdlet lorsqu’elle exécute une opération. Le pipelining est réalisé en utilisant le symbole "|". Tous les verbes du même ensemble nom-cmdlet peuvent utiliser les informations canalisées à partir d’une autre commande. Certains ensembles nom-cmdlet permettent également de transférer des données via le pipeline vers un autre ensemble nom-cmdlet.

Voir les sections suivantes pour obtenir des informations et des exemples sur l’utilisation du pipelining dans l’environnement de ligne de commande Exchange Management Shell :

Utilisation du pipelining pour exécuter plusieurs actions

Utilisation du pipelining pour traiter les données à partir d’une autre cmdlet

Utilisation du pipelining pour canaliser les données entre les différents noms

Utilisation du pipelining pour reporter les erreurs

L’utilisation du pipelining pour enchaîner les actions de deux ou plusieurs cmdlets donne à l’environnement de ligne de commande Exchange Management Shell le pouvoir de composition, qui vous permet de convertir les plus petits composants en quelque chose de plus puissant. Par exemple, une cmdlet peut être utilisée pour collecter les données et les transférer à une seconde cmdlet pour les filtrer pour un sous-ensemble, puis pour les transférer à une troisième cmdlet pour agir uniquement sur le sous-ensemble.

Par exemple, la commande suivante utilise le pipelining pour déplacer toutes les boîtes aux lettres du Server1 vers la base de données Executives du Server2 en utilisant la cmdlet New-MoveRequest, en fonction de la production qui est routée à partir de la cmdlet Get-Mailbox :

Get-Mailbox -Server Server1 | New-MoveRequest -TargetDatabase Executives

Le pipelining peut également être utilisé pour traiter les données produites par une cmdlet. Par exemple, pour une liste de tous les traitements où la propriété du traitement HandleCount est supérieure à 400, Il est possible d’exécuter la commande suivante :

Get-Process | Where { $_.HandleCount -gt 400 } | Format-List

Dans cet exemple, la cmdlet Get-Process passe les objets à la cmdlet Where-Object. La cmdlet Where-Objectchoisit les objets qui ont une propriété appelée HandleCount avec une valeur supérieure à 400.

RemarqueRemarque :
Where est un alias pour la cmdlet Where-Object cmdlet. Pour plus d’informations, voir Alias.

Dans cet exemple, la propriété HandleCount est précédée par la variable $_. Cette variable est créée automatiquement par l’environnement de ligne de commande Exchange Management Shell pour stocker l’objet de pipeline en cours. La cmdlet Where-Objectenvoie ensuite ces objets à la cmdlet Format-List pour affichage.

L’utilisation des objets structurés, au lieu de texte, constitue l’une des capacités les plus intéressantes de l’environnement de ligne de commande Exchange Management Shell. L’utilisation des objets structurés constitue une base d’un model informatique d’administration puissant. Pour plus d’informations sur les objets structurés, voir Données structurées.

Le pipelining des données entre différents noms est utile si vous souhaitez utiliser les données d’une cmdlet avec une autre cmdlet. Cependant, la cmdlet précédente dans le pipeline ne crée pas d’objet que la cmdlet suivante peut utiliser pour identifier l’objet sur lequel agir. Cette situation se produit généralement si vous essayez de canaliser un objet d’une cmdlet avec un nom différent de celui de la cmdlet en attente de l’objet. Pour plus d’informations sur les cmdlets, voir Cmdlets.

Pour transférer des données entre les cmdlets qui n’ont pas été optimisées pour transférer les objets directement entre elles, vous devez transférer les objets via la cmdlet ForEach. Lorsque vous utilisez la cmdlet ForEach, vous pouvez accéder à l’objet directement à l’aide de la variable spéciale $_ et associer ses propriétés avec les paramètres sur la seconde cmdlet.

Dans l’exemple suivant, les cmdlets Get-Mailbox et New-InboxRule ne sont pas optimisées pour transférer des objets directement entre elles. Pour que la cmdlet New-InboxRule agisse sur les objets fournis par la cmdlet Get-Mailbox, nous devons associer manuellement la propriété correcte sur l’objet de boîte aux lettres pour le paramètre correct sur la cmdlet New-InboxRule. Pour ce faire, nous utilisons la commande suivante :

Get-Mailbox | ForEach { New-InboxRule -Name "Mark as Read" -Mailbox $_.Name -From john@contoso.com -MarkAsRead $True}

Dans cet exemple, nous savons que la cmdlet New-InboxRule requiert que vous spécifiiez la boîte aux lettres sur laquelle créer la nouvelle règle de boîte de réception. Nous savons également que la cmdlet Get-Mailbox crée un objet qui contient le nom de chaque boîte aux lettres renvoyée. En utilisant la cmdlet ForEach, qui contient la commande à exécuter sur chaque objet reçu, nous devons accéder à la variable spéciale $_ qui contient l’objet en cours dans le pipeline. Nous pouvons accéder à la propriété Name de l’objet de boîte aux lettres en cours à l’aide de la syntaxe $_.Name. Nous donnons $_.Name comme argument du paramètre Mailbox de la cmdlet New-InboxRule qui fournit les informations nécessaires à la création de la nouvelle règle de boîte de réception.

RemarqueRemarque :
ForEach est un alias pour la cmdlet ForEach-Object. Pour plus d’informations, voir Alias.

Pour reporter les erreurs, vous pouvez utiliser le pipeline d’erreurs. Le pipeline d’erreurs vous permet de reporter les erreurs lorsque la commande est en exécution. Vous n’avez pas à attendre jusqu’à la fin de l’exécution de la commande ou mettre les informations d’erreurs dans le pipeline de résultats standard. La cmdlet Write-Error écrit ses arguments dans le pipeline d’erreurs.

Pour plus d’informations sur le pipelining, exécutez la commande suivante dans l’environnement de ligne de commande Exchange Management Shell :

Get-Help About_Pipeline
 
Afficher: