Mettre en forme la sortie dans la console PowerShell
Sommaire
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.
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" :
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 :
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".