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