La mise en pipeline fonctionne pratiquement partout dans Windows PowerShell. Bien que ce que vous voyez à l'écran soit du texte, Windows PowerShell ne dirige pas du texte entre les commandes, mais des objets.

La notation utilisée pour les pipelines est semblable à celle utilisée dans d'autres interpréteurs de commandes, de sorte qu'à première vue, il peut ne pas apparaître que Windows PowerShell introduit quelque chose de nouveau. Par exemple, si vous utilisez l'applet de commande Out-Host pour forcer un affichage page par page de la sortie d'une autre commande, la sortie ressemble juste à du texte normal affiché à l'écran, divisé en pages :

PS> Get-ChildItem -Path C:\WINDOWS\System32 | Out-Host -Paging

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS\system32

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2005-10-22  11:04 PM        315 $winnt$.inf
-a---        2004-08-04   8:00 AM      68608 access.cpl
-a---        2004-08-04   8:00 AM      64512 acctres.dll
-a---        2004-08-04   8:00 AM     183808 accwiz.exe
-a---        2004-08-04   8:00 AM      61952 acelpdec.ax
-a---        2004-08-04   8:00 AM     129536 acledit.dll
-a---        2004-08-04   8:00 AM     114688 aclui.dll
-a---        2004-08-04   8:00 AM     194048 activeds.dll
-a---        2004-08-04   8:00 AM     111104 activeds.tlb
-a---        2004-08-04   8:00 AM       4096 actmovie.exe
-a---        2004-08-04   8:00 AM     101888 actxprxy.dll
-a---        2003-02-21   6:50 PM     143150 admgmt.msc
-a---        2006-01-25   3:35 PM      53760 admparse.dll
<SPACE> next page; <CR> next line; Q quit
...

La commande Out-Host - Paging est un élément de pipeline utile lorsque la sortie est longue et que vous souhaitez l'afficher lentement. Elle l'est aussi particulièrement si l'opération sollicite fortement les ressources processeur. Dans la mesure où le traitement est transféré à l'applet de commande Out-Host lorsqu'elle dispose d'une page complète prête à afficher, les applets de commande qui la suivent dans le pipeline arrêtent l'opération jusqu'à ce que la page suivante de la sortie soit disponible. Vous pouvez l'observer si vous utilisez le Gestionnaire des tâches de Windows pour surveiller l'utilisation de l'UC et de la mémoire par Windows PowerShell.

Exécutez la commande suivante : Get-ChildItem C:\Windows -Recurse. Comparez l'utilisation des ressources processeur et de la mémoire par rapport à cette commande : Get-ChildItem C:\Windows -Recurse | Out-Host -Paging. Ce que vous voyez à l'écran est du texte, mais uniquement parce qu'il est nécessaire de représenter des objets sous forme de texte dans une fenêtre de console. Il s'agit d'une simple représentation de ce qui se passe à l'intérieur de Windows PowerShell. Par exemple, prenons l'applet de commande Get-Location. Si vous tapez Get-Location alors que votre emplacement actuel est la racine du lecteur C, vous obtenez la sortie suivante :

PS> Get-Location

Path
----
C:\

Si Windows PowerShell a dirigé du texte, l'exécution d'une commande telle que Get-Location | Out-Host passe de Get-Location à Out-Host un ensemble de caractères dans l'ordre dans lequel ils s'affichent à l'écran. En d'autres termes, en ignorant les informations de titre, Out-Host recevrait en premier le caractère « C' », puis le caractère « :' », puis le caractère « \' ». L'applet de commande Out-Host ne pourrait pas déterminer la signification à donner aux caractères fournis par l'applet de commande Get-Location.

Au lieu d'utiliser du texte pour permettre aux commandes d'un pipeline de communiquer, Windows PowerShell utilise des objets. Du point de vue de l'utilisateur, les objets regroupent des informations connexes sous une forme qui facilite la manipulation de ces informations en tant qu'unité et extraient les éléments spécifiques dont vous avez besoin.

La commande Get-Location ne retourne pas du texte qui contient le chemin d'accès actuel. Elle retourne un package d'informations appelé « objet PathInfo » qui contient le chemin d'accès actuel et quelques autres informations. L'applet de commande Out-Host envoie ensuite cet objet PathInfo à l'écran, et Windows PowerShell décide des informations à afficher et de la manière de les afficher selon ses règles de mise en forme.

En fait, la sortie des informations de titre par l'applet de commande Get-Location est ajoutée uniquement à la fin du processus, au moment de la mise en forme des données en vue de leur affichage à l'écran. Ce que vous voyez à l'écran est une synthèse des informations, et non une représentation complète de l'objet de sortie.

Mais si les informations issues d'une commande Windows PowerShell peuvent être plus nombreuses que celles qui sont visibles dans la fenêtre de la console, comment récupérer celles qui ne le sont pas ? Comment consulter les données supplémentaires ? Et si vous souhaitez consulter les données dans un format différent de celui qu'utilise normalement Windows PowerShell ?

La suite de ce chapitre explique comment découvrir la structure d'objets Windows PowerShell spécifiques, en sélectionnant des éléments spécifiques et en les mettant en forme pour un affichage plus facile, et comment envoyer ces informations à d'autres emplacements de sortie, tels que des fichiers et des imprimantes.




Table des matières