15/11/2024

Mettre en forme la sortie dans la console PowerShell

I. Présentation

Dans ce chapitre, nous allons apprendre à mettre en forme la sortie dans la console PowerShell grâce à l'utilisation de plusieurs cmdlets : Format-Table, Format-List, Select-Object et Out-GridView. Ils sont particulièrement utiles lorsque nous travaillons dans la console PowerShell et que nous avons besoin de formater la sortie d'une certaine façon. De plus, le cmdlet Select-Object joue aussi un rôle intéressant dans les scripts.

Par défaut, chaque cmdlet PowerShell retourne les objets en respectant son affichage par défaut, avec généralement plusieurs propriétés. Comme nous l'avons vu, chaque objet contient un ensemble de propriétés, et parfois, nous avons besoin de sélectionner et/ou d'afficher certaines propriétés plutôt que d'autres. Ces différents cmdlets vont nous aider à atteindre notre objectif !

II. Affichage en tableau avec Format-Table

Le cmdlet Format-Table permet de présenter les données dans la console sous forme de tableau. C'est particulièrement utile lorsque vous travaillez avec des données structurées. Il s'utilise toujours à la suite d'un pipeline afin d'afficher dans la console les objets retournés par la première commande.

Voici un exemple pour afficher un tableau avec les propriétés "Name", "LastLogon", et "SID" uniquement. Ceci permet d'avoir l'affichage que nous souhaitons, car par défaut, le cmdlet "Get-LocalUser" retourne les propriétés "Name", "Enabled" et "Description".

Get-LocalUser | Format-Table Name, LastLogon, SID

Ce qui donne :

Il y a également un alias pour le cmdlet "Format-Table" :

Get-LocalUser | ft Name, LastLogon, SID

III. Affichage en liste avec Format-List

Le cmdlet "Format-List" fonctionne sur le même principe que "Format-Table" à la différence qu'il va afficher les données sous forme de liste plutôt que de tableau.

Si nous reprenons l'exemple précédent, nous obtenons :

Get-LocalUser | Format-List Name, LastLogon, SID

Les informations sont les mêmes, mais la présentation est différente. Parfois, cet affichage est plus pratique que le mode tableau, notamment lorsque nous avons besoin d'afficher un grand nombre de propriétés.

PowerShell - Format-List - Exemple

Il y a également un alias pour le cmdlet "Format-List" :

Get-LocalUser | fl Name, LastLogon, SID

IV. Sélectionner des propriétés avec Select-Object

Le cmdlet "Select-Object" est utilisé pour sélectionner des propriétés spécifiques d'un objet. Il est pratique dans différents cas et peut être couplé avec "Format-Table", "Format-List", ainsi que "Out-GridView".

Quand nous exécutons cette commande :

$ListeUtilisateurs = Get-LocalUser

PowerShell stocke dans la variable "$ListeUtilisateurs" le résultat retourné par "Get-LocalUser", avec l'ensemble des propriétés. Si nous avons besoin de conserver uniquement certaines propriétés, nous pouvons faire ceci :

$ListeUtilisateurs = Get-LocalUser | Select-Object Name, LastLogon, SID

Nous voyons bien l'impact sur le contenu de la variable "$ListeUtilisateurs" :

PowerShell - Select-Object - Exemple

Le cmdlet "Select-Object", du fait qu'il permette de sélectionner une ou plusieurs propriétés, agit comme un filtre.

Si nous utilisons "Select-Object" avec les autres cmdlets permettant de formater l'affichage, cela donne :

Get-LocalUser | Select-Object Name, LastLogon, SID | Format-Table
Get-LocalUser | Select-Object Name, LastLogon, SID | Format-List
Get-LocalUser | Select-Object Name, LastLogon, SID | Out-GridView

Il y a également un alias pour le cmdlet "Select-Object" :

Get-LocalUser | select Name, LastLogon, SID

Enfin, sachez que "Select-Object" permet de créer ce que l'on appelle des propriétés calculées, c'est-à-dire des propriétés personnalisées. Pour approfondir ce point, consultez cet article :

V. Un semblant d'interface graphique avec Out-GridView

"Out-GridView" est un cmdlet qui permet de présenter les données sous forme de grille, dans une nouvelle fenêtre interactive. En fait, "Out-GridView" est très utile pour visualiser les informations de façon graphique, en dehors de la console.

Contrairement à "Format-Table" et "Format-List", il ne permet pas de spécifier les propriétés à afficher. Ceci implique d'utiliser "Select-Object" en complément pour sélectionner les propriétés que nous souhaitons afficher.

Get-LocalUser | Out-GridView
Get-LocalUser | Select-Object Name, LastLogon, SID | Out-GridView

Cela ouvre une nouvelle fenêtre avec les informations correspondantes aux propriétés sélectionnées :

PowerShell - Out-GridView - Exemple

Nous pouvons cliquer sur le nom des colonnes pour effectuer un tri selon une propriété spécifique, soit par ordre croissant ou décroissant ! De plus, nous pouvons saisir un mot clé dans la zone de recherche pour filtrer les données à la volée. Le bouton "Add criteria" permet d'ajouter une ou plusieurs conditions basées sur les propriétés visibles à l'écran. C'est très pratique !

Le cmdlet "Out-GridView" pourra s'avérer très précieux et vous faire gagner beaucoup de temps si vous avez une sortie avec beaucoup d'informations.

Remarque : pour effectuer un tri sans utiliser "Out-GridView", nous pouvons utiliser le cmdlet "Sort-Object" prévu à cet effet.

Enfin, sachez qu'il y a aussi un alias pour le cmdlet "Out-GridView" :

Get-LocalUser | ogv

VI. Conclusion

En conclusion, nous pouvons affirmer que les cmdlets "Format-Table", "Format-List", "Select-Object" et "Out-GridView" offrent une grande flexibilité pour la présentation et la manipulation des objets dans PowerShell, afin d'ajuster la sortie dans la console. Nous avons aussi vu qu'il y a un réel intérêt à les combiner dans certains cas, notamment pour utiliser conjointement "Select-Object" et "Out-GridView".


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.