in

Apprentissage du formatage, du filtrage et de la comparaison dans PowerShell

Dans cette édition de Geek School, nous examinons le formatage, le filtrage et la comparaison des objets dans le Pipeline.

Assurez-vous de lire les articles précédents de la série:

Et restez à l’écoute pour le reste de la série toute la semaine.

Formatage par défaut

Quand j’ai commencé avec PowerShell, je pensais que tout était magique, mais la vérité est qu’il faut juste un peu de temps pour comprendre ce qui se passe sous le capot. Il en va de même pour le système de formatage PowerShell. En fait, si vous exécutez l’applet de commande Get-Service, la sortie générée ne vous montre que 3 propriétés: Statut, Nom et DisplayName.

image

Mais si vous dirigez Get-Service vers Get-Member, vous voyez que les objets ServiceController ont beaucoup plus que ces trois propriétés, alors que se passe-t-il?

image

La réponse se trouve dans un fichier caché qui définit comment la plupart des applets de commande intégrées affichent leur sortie. Pour comprendre, tapez ce qui suit dans le shell et appuyez sur Entrée.

bloc-notes C: Windows System32 WindowsPowerShell v1.0 DotNetTypes.format.ps1xml

Si nous utilisons la fonction Rechercher du bloc-notes, nous pouvons rapidement passer à la section qui détaille la sortie de la cmdlet Get-Service en recherchant le type ServiceController.

image

Soudainement, vous pouvez voir que sous le capot PowerShell met en forme tous les objets du pipeline qui sont du type ServiceController et crée une table avec trois colonnes: Statut, Nom et Nom d’affichage. Mais que se passe-t-il si le type avec lequel vous traitez n’a pas d’entrée dans ce fichier, ou dans tout autre fichier de format d’ailleurs? Eh bien, c’est assez simple en fait. Si l’objet sortant du pipeline a 5 propriétés ou plus, PowerShell affiche toutes les propriétés de l’objet dans une liste; s’il a moins de 5 propriétés, il les affiche dans un tableau.

Formatage de vos données

Si vous n’êtes pas satisfait de la mise en forme par défaut d’un objet ou d’un type, vous pouvez appliquer votre propre mise en forme. Pour ce faire, vous devez connaître trois applets de commande.

  • Liste des formats
  • Table de format
  • À l’échelle du format

image

À l’échelle du format prend simplement une collection d’objets et affiche une propriété unique de chaque objet. Par défaut, il recherchera une propriété de nom; si vos objets ne contiennent pas de propriété de nom, il utilisera la première propriété de l’objet une fois que les propriétés auront été triées par ordre alphabétique.

Get-Service | À l’échelle du format

image

Comme vous pouvez le voir, la valeur par défaut est également de deux colonnes, bien que vous puissiez spécifier à la fois la propriété que vous souhaitez utiliser, ainsi que le nombre de colonnes que vous souhaitez afficher.

Get-Service | Format-Wide -Property DisplayName -Colonne 6

image

Si un élément est mis en forme sous forme de tableau par défaut, vous pouvez toujours le basculer en mode liste à l’aide de la cmdlet Format-List. Jetons un coup d’œil à la sortie de la cmdlet Get-Process.

image

Cette vue tabulaire convient en fait très bien à ce type d’informations, mais supposons que nous voulions les afficher sous forme de liste. Tout ce que nous avons à faire est de le canaliser vers Liste des formats.

Get-Process | Liste des formats

image

Comme vous pouvez le voir, seuls quatre éléments sont affichés par défaut dans la liste. Pour afficher toutes les propriétés de l’objet, vous pouvez utiliser un caractère générique.

Get-Process | Format-List – Propriété *

image

Vous pouvez également sélectionner uniquement les propriétés souhaitées.

Get-Process | Format-List: nom de la propriété, id

image

Tableau des formats, d’autre part, prend des données et les transforme en tableau. Étant donné que nos données de Get-Process sont déjà sous la forme d’un tableau, nous pouvons les utiliser pour choisir facilement les propriétés que nous voulons afficher dans le tableau. J’ai utilisé le paramètre AutoSize pour que toutes les données tiennent sur un seul écran.

Get-Process | Format-Table nom, id –AutoSize

image

Filtrage et comparaison

L’une des meilleures choses à propos de l’utilisation d’un pipeline basé sur des objets est que vous pouvez filtrer les objets hors du pipeline à tout moment à l’aide de l’applet de commande Where-Object.

Get-Service | Where-Object {$ _. Status -eq « Running »}

image

Utiliser where object est en fait très simple. $ _ représente l’objet de pipeline actuel, à partir duquel vous pouvez choisir une propriété sur laquelle vous souhaitez filtrer. Ici, nous ne conservons que les objets dont la propriété Status est égale à Running. Il existe quelques opérateurs de comparaison que vous pouvez utiliser dans le bloc de script de filtrage:

  • eq (égal à)
  • neq (différent de)
  • gt (supérieur à)
  • ge (supérieur ou égal à)
  • lt (moins de)
  • le (Inférieur ou égal à)
  • comme (Wildcard String Match)

Une liste complète et plus d’informations peuvent être consultées dans le fichier d’aide conceptuelle about_comparison, mais il faut un certain temps pour s’habituer à la syntaxe Where-Obeject. C’est tout pour cette fois!

Laisser un commentaire

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

Comment regarder des vidéos YouTube synchronisées avec vos amis

Comment regarder des vidéos YouTube synchronisées avec vos amis

Comment habiller du texte autour d'images et d'autres illustrations dans Microsoft Word

Comment habiller du texte autour d’images et d’autres illustrations dans Microsoft Word