Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Le fonctionnement du pipeline

Introduction

Un environnement tel que Windows PowerShell fonctionne grâce à un certain nombre d’éléments effectuant chacun un travail précis. La philosophie même de PowerShell repose sur l’articulation de ces éléments dans le but de produire quelque chose de plus important. La première considération est d’essayer de comprendre comment cette articulation se déploie. Ici, la réponse se trouve dans le concept de pipeline qui est central dans l’économie d’une saisie intuitive des mécanismes inhérents à son mode de fonctionnement.

Ce chapitre nous apportera quelques notions clés autour du concept de pipeline, à savoir la compréhension de son principe de fonctionnement ainsi que le phénomène de liaison de paramètres, processus très complexe, mais qui sera rendu le plus intelligible possible.

Comprendre le pipeline dans Windows PowerShell

Un des marqueurs de la puissance de Windows PowerShell réside dans l’existence du concept de pipeline. Par pipeline, j’entends un mécanisme par lequel des commandes, quel que soit leur type, communiquent les unes avec les autres.

Mode de fonctionnement du pipeline


Commande_1 (1) | Commande_2 (2) | Commande_3 (3)
 

Windows PowerShell exécute les commandes de gauche à droite. Donc, une première commande (1) est exécutée par PowerShell ; la sortie est envoyée à la commande (2) qui suit, et ainsi de suite (3). Le principe est en apparence simple, mais très compliqué en réalité et heureusement, les administrateurs n’ont pas à se préoccuper des dimensions internes et programmatiques de Windows PowerShell.

Prenons un exemple concret pour mieux comprendre de quoi il retourne :

PS> Get-Service | Sort-Object -Property 'Status' -Descending 
 
Status   Name               DisplayName 
------   ----               ----------- 
Running  Schedule           Planificateur de tâches 
Running  Spooler            Spouleur d'impression 
Running  ProfSvc            Service de profil utilisateur 
Running  Themes        ...

Comprendre le phénomène de liaison de paramètres

Le processus de liaison de paramètres est un processus très complexe en interne et dont nous n’évoquerons évidemment pas dans cet ouvrage les mécanismes. Néanmoins, nous nous bornerons à décrire les principes de base de ce processus que le lecteur doit connaître pour mieux comprendre Windows PowerShell.

Le premier élément est que lorsqu’un objet est envoyé d’une commande vers une autre, PowerShell associe l’objet envoyé à l’un des paramètres de la commande recevant cet objet. Pour cela, l’association « objet-paramètre » doit respecter au moins deux règles fondamentales :

  • le paramètre visé doit accepter des objets en provenance du pipeline ;

  • le type de valeur attendue par le paramètre doit correspondre au type de l’objet envoyé, ou ce dernier doit pouvoir être converti dans la valeur attendue par le paramètre. 

Ces deux règles sont essentielles parce que le processus de liaison de paramètres est entièrement géré par Windows PowerShell qui ne laisse que très peu de perspectives à l’utilisateur car ses logiques internes sont difficilement accessibles. Voici un exemple de paramètre acceptant des valeurs en provenance du pipeline :

PS> Get-Help Get-Process -Parameter 'ComputerName' 
 
-ComputerName <String[]> 
    Gets the processes running on the specified computers. The default is 
the local computer. 
 
    Type the NetBIOS name, an IP address, or a fully qualified domain 
name of one or more computers. To specify the local computer, type the 
computer name, a dot (.), or "localhost". 
 
    This parameter does not rely on Windows PowerShell remoting. You can 
use the ComputerName parameter of Get-Process even if your computer is 
not configured to run remote commands. 
 
    Obligatoire ?                False 
    Position ?                   Named 
    Valeur par défaut                    ...