Windows PowerShell propose un jeu d'applets de commande qui vous permettent de contrôler les propriétés à afficher pour des objets particuliers. Les noms de toutes ces applets de commande commencent par le verbe Format. Elles vous permettent de sélectionner une ou plusieurs propriétés à afficher.

Les applets de commande Format sont Format-Wide, Format-List, Format-Table et Format-Custom. Nous décrirons uniquement les applets de commande Format-Wide, Format-List et Format-Table dans ce Guide de l'utilisateur.

Chaque applet de commande Format a des propriétés qui seront utilisées par défaut si vous ne spécifiez pas de propriétés spécifiques à afficher. Chaque applet de commande utilise également le même nom de paramètre, Property, pour spécifier les propriétés à afficher. Parce que Format-Wide n'affiche qu'une seule propriété, son paramètre Property n'accepte qu'une seule valeur, contrairement à celui de Format-List et Format-Table, qui accepte une liste de noms de propriétés.

Si vous utilisez la commande Get-Process -Name powershell avec deux instances de Windows PowerShell en cours d'exécution, vous obtenez une sortie similaire à la suivante :

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    995       9    30308      27996   152     2.73   2760 powershell
    331       9    23284      29084   143     1.06   3448 powershell

Dans la suite de cette section, nous découvrirons comment utiliser les applets de commande Format pour modifier l'affichage de la sortie de cette commande.

Utilisation de Format-Wide pour une sortie unitaire

L'applet de commande Format-Wide, par défaut, affiche uniquement la propriété par défaut d'un objet. Les informations associées à chaque objet s'affichent dans une seule colonne :

PS> Get-Process -Name powershell | Format-Wide

powershell                              powershell

Vous pouvez également spécifier une propriété autre que celle par défaut :

PS> Get-Process -Name powershell | Format-Wide -Property Id

2760                                    3448

Contrôle de l'affichage de Format-Wide avec Column

Avec l'applet de commande Format-Wide, vous ne pouvez afficher qu'une propriété à la fois. Cela la rend utile pour afficher des listes simples où ne figure qu'un élément par ligne. Pour obtenir une liste simple, affectez au paramètre Column la valeur 1 en tapant :

Get-Command Format-Wide -Property Name -Column 1

Utilisation de Format-List pour une vue Liste

L'applet de commande Format-List affiche un objet sous forme de liste, avec chaque propriété libellée et affichée sur une ligne distincte :

PS> Get-Process -Name powershell | Format-List

Id      : 2760
Handles : 1242
CPU     : 3.03125
Name    : powershell

Id      : 3448
Handles : 328
CPU     : 1.0625
Name    : powershell

Vous pouvez spécifier autant de propriétés que vous le souhaitez :

PS> Get-Process -Name powershell | Format-List -Property ProcessName,FileVersion
,StartTime,Id


ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:42:00
Id          : 2760

ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:54:28
Id          : 3448

Obtention d'informations détaillées en utilisant Format-List avec des caractères génériques

L'applet de commande Format-List vous permet d'utiliser un caractère générique comme valeur de son paramètre Property. Cela vous permet d'afficher des informations détaillées. Les objets incluent souvent plus d'informations que vous n'en avez besoin. C'est pourquoi, par défaut, Windows PowerShell n'affiche pas toutes les valeurs de propriétés. Pour afficher toutes les propriétés d'un objet, utilisez la commande Format-List -Property * . La commande suivante génère plus de 60 lignes de sortie pour un seul processus :

Get-Process -Name powershell | Format-List -Property *

Bien que la commande Format-List soit pratique pour afficher le détail, si vous souhaitez une vue d'ensemble de sortie comprenant de nombreux éléments, un tableau plus simple est souvent plus utile.

Utilisation de Format-Table pour une sortie sous forme de tableau

Si vous utilisez l'applet de commande Format-Table sans nom de propriété spécifié pour mettre en forme la sortie de la commande Get-Process , vous obtenez exactement la même sortie que si vous n'aviez appliqué aucune mise en forme. La raison en est que les processus s'affichent habituellement sous forme de tableau, comme la plupart des objets Windows PowerShell.

PS> Get-Process -Name powershell | Format-Table

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
   1488       9    31568      29460   152     3.53   2760 powershell
    332       9    23140        632   141     1.06   3448 powershell

Amélioration de la sortie de Format-Table (AutoSize)

Bien qu'un affichage sous forme de tableau soit utile pour afficher de nombreuses informations comparables, il peut être difficile à interpréter s'il est trop étroit pour les données. Par exemple, si vous essayez d'afficher les propriétés Path (chemin d'accès), Name (nom), ID et Company (société) d'un processus, vous obtenez une sortie tronquée pour le chemin d'accès du processus et la colonne Company :

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company

Path                Name                                 Id Company
----                ----                                 -- -------
C:\Program Files... powershell                         2836 Microsoft Corpor...

Si vous spécifiez le paramètre AutoSize (redimensionnement automatique) lorsque vous exécutez la commande Format-Table, Windows PowerShell calculera les largeurs de colonnes en fonction des données qui seront effectivement affichées. La colonne Path devient ainsi lisible, mais la colonne Company reste tronquée :

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company -
AutoSize

Path                                                    Name         Id Company
----                                                    ----         -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2836 Micr...

L'applet de commande Format-Table peut encore tronquer des données, mais seulement à la fin de l'écran. Les propriétés, hormis la dernière affichée, se voient dotées d'une taille suffisante pour afficher correctement leur élément de données le plus long. Vous pouvez constater que le nom de la société est visible, mais que le chemin d'accès est tronqué si vous échangez les positions de Path et Company dans la liste de valeurs de Property :

PS> Get-Process -Name powershell | Format-Table -Property Company,Name,Id,Path -
AutoSize

Company               Name         Id Path
-------               ----         -- ----
Microsoft Corporation powershell 2836 C:\Program Files\Windows PowerShell\v1...

La commande Format-Table suppose que plus une propriété est proche du début de la liste, plus elle est importante. Elle essaie donc d'afficher complètement les propriétés les plus proches du début. Si la commande Format-Table ne peut pas afficher toutes les propriétés, elle supprime des colonnes de l'affichage et fournit un avertissement. Vous pouvez observer ce comportement si vous placez la propriété Name en dernière position dans la liste :

PS> Get-Process -Name powershell | Format-Table -Property Company,Path,Id,Name -
AutoSize

WARNING: column "Name" does not fit into the display and was removed.

Company               Path                                                    I
                                                                              d
-------               ----                                                    -
Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\powershell.exe 6

Dans la sortie ci-dessus, la colonne ID est tronquée pour la faire tenir dans la liste et les en-têtes de colonnes sont empilés. Le redimensionnement automatique des colonnes ne produit pas toujours l'effet escompté.

Renvoi à la ligne dans la sortie en colonnes de Format-Table (Wrap)

Vous pouvez forcer le renvoi à la ligne de longues données Format-Table dans sa colonne d'affichage en utilisant le paramètre Wrap. L'utilisation du seul paramètre Wrap ne donnera pas nécessairement le résultat voulu, dans la mesure où les paramètres par défaut sont utilisés si vous ne spécifiez pas également AutoSize :

PS> Get-Process -Name powershell | Format-Table -Wrap -Property Name,Id,Company,
Path

Name                                 Id Company             Path
----                                 -- -------             ----
powershell                         2836 Microsoft Corporati C:\Program Files\Wi
                                        on                  ndows PowerShell\v1
                                                            .0\powershell.exe 

L'utilisation du paramètre Wrap seul présente toutefois l'avantage de ne pas trop ralentir le traitement. Si vous effectuez un listage de fichiers récursif sur un important système de répertoires et utilisez AutoSize, l'opération peut demander très longtemps et utiliser beaucoup de mémoire avant que ne s'affichent les premiers éléments de la sortie.

Si vous ne vous préoccupez pas de la charge système, AutoSize fonctionne bien avec le paramètre Wrap. Les premières colonnes occupent toujours la largeur dont elles ont besoin pour afficher des éléments sur une ligne, comme lorsque vous spécifiez AutoSize sans le paramètre Wrap. La seule différence est, s'il est nécessaire, le renvoi à la ligne dans la dernière colonne :

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Company,Path

Name         Id Company               Path
----         -- -------               ----
powershell 2836 Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\
                                      powershell.exe

Certaines colonnes peuvent ne pas s'afficher si vous spécifiez en premier les colonnes les plus larges, de sorte qu'il est plus sûr de spécifier d'abord les plus petits éléments de données. Dans l'exemple suivant, nous spécifions en premier l'élément de chemin d'accès extrêmement large, et même avec le renvoi à la ligne, nous perdons toujours la dernière colonne, Name :

 PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Path,I
d,Company,Name

WARNING: column "Name" does not fit into the display and was removed.

Path                                                      Id Company
----                                                      -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe 2836 Microsoft Corporat
                                                             ion

Organisation de la sortie en tableau (-GroupBy)

GroupBy est un autre paramètre utile pour contrôler la sortie sous forme de tableau. Il peut être difficile de comparer de longues listes disposées en tableau. Le paramètre GroupBy effectue des regroupements dans la sortie selon une valeur de propriété. Par exemple, nous pouvons regrouper des processus par société pour un examen plus facile, en omettant la valeur Company de la liste des propriétés :

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Path -GroupBy Company


   Company: Microsoft Corporation

Name         Id Path
----         -- ----
powershell 1956 C:\Program Files\Windows PowerShell\v1.0\powershell.exe
powershell 2656 C:\Program Files\Windows PowerShell\v1.0\powershell.exe




Table des matières