Utilisation des commandes de mise en forme pour modifier l’affichage d’une sortie
PowerShell dispose d’un ensemble d’applets de commande qui vous permettent de contrôler la façon dont les propriétés s’affichent pour certains objets. Le nom de toutes les applets de commande commence par Format
. Vous pouvez sélectionner les propriétés que vous voulez 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-List
et Format-Table
.
Dans PowerShell, chaque type d’objet possède des propriétés qui sont utilisées par défaut si vous ne sélectionnez pas celles qui doivent être affichées. Chaque applet de commande utilise le même paramètre Property pour spécifier les propriétés à afficher. Comme Format-Wide
n’affiche qu’une seule propriété, son paramètre Property n’accepte qu’une seule valeur, mais les paramètres des propriétés de Format-List
et Format-Table
acceptent une liste de noms de propriétés.
Dans cet exemple, la sortie par défaut de l’applet de commande Get-Process
montre qu’il y a deux instances d’Internet Explorer en cours d’exécution.
Get-Process -Name iexplore
Par défaut, les objets Process affichent les propriétés présenté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 l’applet de commande Format-Wide pour une sortie d’élément unique
Par défaut, l’applet de commande Format-Wide
affiche uniquement la propriété par défaut d’un objet. Les informations associées à chaque objet s’affichent 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é autre que celle 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
La cmdlet Format-Wide
ne permet d’afficher qu’une seule propriété à la fois. Cela s’avère utile pour afficher des listes volumineuses dans plusieurs colonnes.
Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom Hex List
Table Wide
Utilisation de l’applet de commande Format-List pour un Affichage Liste
L’applet de commande Format-List
affiche un objet sous forme de liste, chaque propriété étant é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
permet d’utiliser un caractère générique comme valeur de son paramètre Property. Cela permet d’afficher des informations détaillées. Souvent, les objets contiennent plus d’informations qu’il n’en faut. C’est pourquoi, par défaut, PowerShell n’affiche pas les valeurs de toutes les 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 iexplore | Format-List -Property *
Bien que la commande Format-List
soit utile pour afficher des détails, si vous voulez obtenir une vue d’ensemble d’une sortie qui comporte un grand nombre d’éléments, une simple vue tabulaire est souvent plus utile.
Utilisation de l’applet de commande Format-Table pour une sortie tabulaire
Si vous utilisez l’applet de commande Format-Table
sans spécifier de noms de propriétés pour mettre en forme la sortie de la commande Get-Process
, vous obtenez exactement la même sortie que si vous n’utilisiez pas d’applet de commande Format
. Par défaut, PowerShell affiche les objets Process 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...
Notes
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 beaucoup d’informations, elle peut être difficile à 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 quand vous exécutez la commande Format-Table
, PowerShell calcule les largeurs des colonnes en fonction des données réelles affichées. Les colonnes deviennent ainsi 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 continuer de tronquer des données, mais cela ne se produit qu’à la fin de l’écran.
Les propriétés, à l’exception de la dernière affichée, disposent de la taille 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
part du principe que les propriétés sont listées par 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 observer 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 ne produit pas nécessairement le résultat escomptés, car si vous ne spécifiez pas AutoSize, les paramètres par défaut sont utilisés :
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 considérablement le traitement. Cependant, si vous voulez mettre en forme une liste récursive de fichiers d’une structure d’annuaire volumineuse en utilisant le paramètre AutoSize, celui-ci tardera à afficher les premiers éléments de sortie et mobilisera beaucoup de mémoire.
Si vous n’êtes pas préoccupé par la charge du système, AutoSize fonctionne bien avec le paramètre Wrap. Les premières colonnes continuent d’utiliser la largeur nécessaire à l’affichage des éléments sur une même ligne, mais la colonne finale est réduite, si nécessaire.
Notes
Il se peut que certaines colonnes ne s’affichent pas si vous spécifiez les colonnes les plus larges en premier. Pour de meilleurs résultats, spécifiez les éléments de données les plus petits en premier.
Dans l’exemple suivant, les propriétés les plus larges sont spécifiées en premier.
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 la sortie tabulaire est GroupBy. Des 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 grouper les services en fonction du paramètre StartType pour faciliter l’inspection, en omettant la valeur de 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…