Aller au contenu

Programmation PowerShell/Formatage de l'affichage

Un livre de Wikilivres.

C'est en train de devenir intéressant

Un point sur les données dans PowerShell

[modifier | modifier le wikicode]

Retenez bien que PowerShell est un shell objet. En bref, là ou les anciens shell manipulent des chaines de caractères, PowerShell manipule des objets du framework .NET

Formatage de l'affichage

[modifier | modifier le wikicode]

Les objets manipulés par PowerShell ont une méthode ToString() qui se charge de noter la description ou la valeur de l'objet au format de chaînes de caractères. Cette méthode est parfois appelée automatiquement par PowerShell mais vous pouvez l'appeler explicitement aussi ! Prenons 12 qui est une valeur typée entier :

12 | get-member

En exécutant l'instruction ci-dessus, vous constatez qu'il est écrit TypeName : System.Int32

Ci-dessous, une commandlette pour afficher dans la console la valeur

Write-Host 12

Automatiquement, PowerShell fait ceci :

Write-Host (12).ToString()

Les types d'objet définissent un formatage par défaut et vous pouvez le constater avec une date :

# différents formats par défaut ...  
Get-Date
Write-Host (Get-Date).ToString()

Lorsque vous en aurez besoin, sachez simplement que vous pouvez modifier cela. Voici un exemple pour la date :

Write-Host (Get-Date).ToString("d MMMM yyyy")

La notion du type des données peut être déroutante lorsque vous débutez. Utilisez abusivement Get-Member pour identifier le type de données renvoyé par PowerShell !

Dans la mesure du possible, travaillez avec des objets et non avec des chaines de caractères !

C'est la notion principale à retenir : avec PowerShell, on agit sur des objets du framework .NET et pas uniquement sur du texte comme les anciens shells !

Formatage de nombreuses données

[modifier | modifier le wikicode]

Cela devient important lorsque vous traitez des listes par exemple avec

Get-Process

La commandlette ci-dessus renvoie une collection de zéro à beaucoup d'éléments typés System.Diagnostics.Process.

Vous pouvez l'afficher en version texte avec la commandlette suivante :

Get-Process | Format-Table -Property ProcessName, StartTime

La commandlette Format-Table renvoie des données formatées ! Elles n'ont plus leur type d'origine et donc, vous ne pouvez plus travailler les objets par la suite car la date StartTime est une chaîne de caractère suite au traitement de formatage. En résumé, les commandes de formatage sont à appliquer en fin de traitement.

Vous pouvez créer vos propres colonnes, etc. Mais je vous conseille d'ignorer tout cela car le but de PowerShell est de traiter les données et non du texte, vos fonctions et vos scripts devront renvoyer des objets et non du texte.