Partager via


Utilisation des commandes de mise en forme pour modifier l’affichage d’une sortie

PowerShell a un ensemble d’applets de commande qui vous permettent de contrôler la façon dont les propriétés sont affichées pour des objets particuliers. Les noms de toutes les applets de commande commencent par le verbe Format. Ils vous permettent de sélectionner les propriétés que vous souhaitez afficher.

Get-Command -Verb Format -Module Microsoft.PowerShell.Utility
CommandType     Name               Version    Source
-----------     ----               -------    ------
Cmdlet          Format-Custom      6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Hex         6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-List        6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Table       6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Wide        6.1.0.0    Microsoft.PowerShell.Utility

Cet article décrit les applets de commande Format-Wide, Format-Listet Format-Table.

Chaque type d’objet dans PowerShell a des propriétés par défaut utilisées lorsque vous ne sélectionnez pas les propriétés à afficher. Chaque applet de commande utilise le même paramètre Property pour spécifier les propriétés que vous souhaitez afficher. Étant donné que Format-Wide n’affiche qu’une seule propriété, son paramètre Property ne prend qu’une seule valeur, mais le paramètre Property de Format-List et Format-Table accepte une liste de noms de propriétés.

Dans cet exemple, la sortie par défaut de Get-Process applet de commande montre que nous avons deux instances d’Internet Explorer en cours d’exécution.

Get-Process -Name iexplore

Le format par défaut des objets Process affiche les propriétés indiquées ici :

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     32    25.52      10.25      13.11   12808   1 iexplore
     52    11.46      26.46       3.55   21748   1 iexplore

Utilisation de Format-Wide pour la sortie d'un élément seul

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 sont affichées dans une seule colonne :

Get-Command -Verb Format | Format-Wide
Format-Custom          Format-Hex
Format-List            Format-Table
Format-Wide

Vous pouvez également spécifier une propriété non par défaut :

Get-Command -Verb Format | Format-Wide -Property Noun
Custom                 Hex
List                   Table
Wide

Contrôle de l’affichage de Format-Wide avec une colonne

Avec l’applet de commande Format-Wide, vous ne pouvez afficher qu’une seule propriété à la fois. Cela permet d’afficher des listes volumineuses dans plusieurs colonnes.

Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom                 Hex                  List
Table                  Wide

Utilisation de Format-List pour un affichage de liste

L’applet de commande Format-List affiche un objet sous la forme d’une description, avec chaque propriété étiquetée et affichée sur une ligne distincte :

Get-Process -Name iexplore | Format-List
Id      : 12808
Handles : 578
CPU     : 13.140625
SI      : 1
Name    : iexplore

Id      : 21748
Handles : 641
CPU     : 3.59375
SI      : 1
Name    : iexplore

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

Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:58 AM
Id          : 12808

ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:57 AM
Id          : 21748

Obtention d’informations détaillées en utilisant l’applet de commande 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. Souvent, les objets incluent plus d’informations que nécessaire, c’est pourquoi PowerShell n’affiche pas toutes les valeurs de propriété par défaut. 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 iexplore | Format-List -Property *

Bien que la commande Format-List soit utile pour afficher les détails, si vous souhaitez une vue d’ensemble de la sortie qui inclut de nombreux éléments, une vue tabulaire plus simple est souvent plus utile.

Utilisation de Format-Table pour la sortie tabulaire

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 vous le faites sans applet de commande Format. Par défaut, PowerShell affiche les objets de processus dans un format tabulaire.

Get-Service -Name win* | Format-Table
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  WinHttpAutoProx... WinHTTP Web Proxy Auto-Discovery Se...
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Manag...

Remarque

Get-Service est disponible uniquement sur les plateformes Windows.

Amélioration de la sortie de l’applet de commande Format-Table

Bien qu’une vue tabulaire soit utile pour afficher de nombreuses informations, il peut être difficile d’interpréter si l’affichage est trop étroit pour les données. Dans l’exemple précédent, la sortie est tronquée. Si vous spécifiez le paramètre AutoSize lorsque vous exécutez la commande Format-Table, PowerShell calcule les largeurs de colonne en fonction des données réelles affichées. Cela rend les colonnes lisibles.

Get-Service -Name win* | Format-Table -AutoSize
Status  Name                DisplayName
------  ----                -----------
Running WinDefend           Windows Defender Antivirus Service
Running WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service
Running Winmgmt             Windows Management Instrumentation
Running WinRM               Windows Remote Management (WS-Management)

L’applet de commande Format-Table peut toujours tronquer des données, mais elle ne tronque qu’à la fin de l’écran. Les propriétés, autres que celles affichées, sont aussi volumineuses que nécessaire pour que leur élément de données le plus long s’affiche correctement.

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc, iphl…
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms, TPHKLO…
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

La commande Format-Table suppose que les propriétés sont répertoriées dans l’ordre d’importance. La cmdlet tente donc d’afficher entièrement 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 certaines colonnes de l’affichage. Vous pouvez voir ce comportement dans l’exemple précédent de la propriété DependentServices.

Retour automatique à la ligne de la sortie de l’applet de commande Format-Table dans les colonnes

Vous pouvez forcer le retour automatique à la ligne des données Format-Table retournées en nombre dans leur colonne d’affichage en utilisant le paramètre Wrap. L’utilisation du paramètre Wrap peut ne pas faire ce que vous attendez, car il utilise les paramètres par défaut si vous ne spécifiez pas non plus autoSize:

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -Wrap
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc,
                                                                                iphlpsvc}
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms,
                                                                                TPHKLOAD,
                                                                                SUService,
                                                                                smstsmgr…}
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

L’utilisation du paramètre Wrap par lui-même ne ralentit pas beaucoup le traitement. Toutefois, l’utilisation de AutoSize pour mettre en forme une liste de fichiers récursifs d’une grande structure de répertoires peut prendre beaucoup de temps et utiliser beaucoup de mémoire avant d’afficher les premiers éléments de sortie.

Si vous ne vous inquiétez pas de la charge système, AutoSize fonctionne correctement avec le paramètre Wrap. Les colonnes initiales utilisent toujours autant de largeur que nécessaire pour afficher les éléments sur une ligne, mais la colonne finale est encapsulée, si nécessaire.

Remarque

Certaines colonnes peuvent ne pas être affichées lorsque vous spécifiez d’abord les colonnes les plus larges. Pour obtenir de meilleurs résultats, spécifiez d’abord les plus petits éléments de données.

Dans l’exemple suivant, nous spécifions d’abord les propriétés les plus larges.

Get-Process -Name iexplore |
    Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id

Même avec le retour automatique à la ligne, la dernière colonne Id est omise :

FileVersion                          Path                                                  Nam
                                                                                           e
-----------                          ----                                                  ---
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE iex
                                                                                           plo
                                                                                           re
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files\Internet Explorer\iexplore.exe       iex
                                                                                           plo
                                                                                           re

Organisation de la sortie de table

Un autre paramètre utile pour le contrôle de sortie tabulaire est GroupBy. Les listes tabulaires plus longues en particulier peuvent être difficiles à comparer. Le paramètre GroupBy groupe la sortie en fonction d’une valeur de propriété. Par exemple, nous pouvons regrouper des services en StartType pour faciliter l’inspection, en omettant la valeur StartType de la liste des propriétés :

Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType
   StartType: Automatic
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Managem…

   StartType: Manual
Status   Name               DisplayName
------   ----               -----------
Running  WinHttpAutoProxyS… WinHTTP Web Proxy Auto-Discovery Serv…