Bases de PowerShell : Format-Table, ft output formatting Cmdlet avec exemples

Windows PowerShell Scripting – Format-Table (FT)

Format-Table, ou FT pour faire court, contrôle le formatage de la sortie de vos commandes Windows PowerShell. Chaque fois que la présentation des informations est importante, pipez la sortie du script dans Format-Table. Sur cette page, je vais vous montrer des exemples de cette commande simple, mais importante.

Sujets de Format-Table de Windows PowerShell

  • Format-Table – Exemples simples
  • Format-Table – Exemples intermédiaires
  • Format-Table avec Get-.WmiObject
  • Format-Table Alias FT
  • Format-Wide
  • PowerShell Format-List

Format-Table – Exemples simples

Scénario : nous souhaitons enquêter sur des processus s’exécutant sur une station de travail ou un serveur Windows.

Pré-requis :
PowerShell et .Net framework sont installés sur votre ordinateur.
Vous êtes à l’invite PS> Ou si vous disposez de PowerShell 2.0, lancez l’ISE.

Exemple 1a
Démarrons avec un exemple utilisant le formatage par défaut :

# Preliminary example, no Format-Table yetGet-Process

Le ‘problème’ est que le nom du processus est à droite, et nous avons des colonnes dans la sortie qui n’ont aucun intérêt.

Exemple 1b
Maintenant, j’introduis Format-Table pour que nous puissions contrôler les propriétés à afficher dans la sortie. Supposons que nous ne soyons intéressés que par ‘Handles’.

# Example of PowerShell Format-TableGet-Process | Format-Table ProcessName, Handles -auto

Note 1 : Grâce à Format-Table, nous avons maintenant le nom du processus dans la première colonne.

Note 2 : -auto empêche la sortie de s’étendre sur toute la largeur et par conséquent, le paramètre -auto rend les chiffres plus faciles à lire. Pour voir l’effet, essayez la commande ci-dessus sans -auto.

Guy Recommande : Network Performance Monitor (ESSAI GRATUIT)

SolarWinds Network Performance Monitor (NPM) vous aidera à découvrir ce qui se passe sur votre réseau. Cet utilitaire vous guidera également dans le dépannage ; le tableau de bord indiquera si la cause première est un lien brisé, un équipement défectueux ou une surcharge de ressources.

Ce que je préfère, c’est la façon dont NPM suggère des solutions aux problèmes de réseau. Son a également la capacité de surveiller la santé des machines virtuelles VMware individuelles. Si vous êtes intéressé par le dépannage, et la création de cartes réseau, alors je vous recommande d’essayer NPM sur un essai gratuit de 30 jours.

SolarWinds Network Performance Monitor Télécharger Essai GRATUIT de 30 jours

Dépannage de Format-Table

La principale chose qui ne va pas avec Format-Table est l’oubli du pipe (|) avant la commande. Ma technique consiste à faire fonctionner la commande principale puis à utiliser (|) pour faire passer la sortie dans Format-Table. De là, nous pouvons lister les noms des propriétés que nous souhaitons afficher.

Un problème secondaire avec ce cmdlet est l’oubli de la virgule entre les propriétés ; mais rappelez-vous, il n’y a pas de virgule après Format-Table et avant la 1ère propriété.

Get-Process | Format-Table ProcessName, Handles ID -autoGet-Process | Format-Table ProcessName, Handles, ID -auto

Format-Table – Exemples intermédiaires

Exemple 2a:
Il est temps de rechercher quelles autres propriétés de Get-Process sont disponibles, puis nous pourrons affiner notre commande Format-Table.

# Example of PowerShell Format-Table for propertiesGet-Process | Get-Member -Membertype property

Exemple 2b : Même ici, je ne peux pas résister à l’utilisation de Format-Table pour filtrer quelle colonne est exportée dans le fichier.

$Proc = Get-Process | Get-Member -Membertype property$Proc | Format-Table Name | Out-File procprop1.txt

Note 3 : Il n’est pas vraiment nécessaire d’introduire la variable $Proc. Cependant, un avantage de cette technique est qu’elle évite les problèmes de word-wrapping de notre script à la ligne suivante.

Exemple 3a : Suite à cette recherche, nous pouvons choisir quelques colonnes différentes dans la sortie, par exemple, BasePriority et HandleCount:

# Exemple de PowerShell Format-Table pour plusieurs éléments
Get-Process | Format-Table Name, HandleCount, BasePriority

Exemple 3b : Voyons ce qui se passe si nous ajoutons -auto.

# Example of PowerShell Format output for multiple itemsGet-Process | Format-Table Name, HandleCount, BasePriority -auto

Guy Recommande : SolarWinds Engineer’s Toolset (ESSAI GRATUIT)

Ce Engineer’s Toolset fournit une console complète de 50 utilitaires pour le dépannage des problèmes informatiques. Guy dit que cela m’aide à surveiller ce qui se passe sur le réseau, et que chaque outil m’en apprend davantage sur le fonctionnement du système sous-jacent.

Il y a tellement de bons gadgets ; c’est comme avoir carte blanche dans un magasin de bonbons. Heureusement, les utilitaires sont affichés de manière logique : surveillance, découverte du réseau, diagnostic et outils Cisco. Essayez dès à présent le SolarWinds Engineer’s Toolset dans le cadre d’un essai gratuit de 14 jours !

SolarWinds Engineer’s Toolset Télécharger essai gratuit de 14 jours

Format-Table avec Get-WmiObject

Format-Table prend tout son sens lorsqu’il s’agit de traiter les classes Get-WmiObject. Comme la sortie contient plus de 5 propriétés, et que la mise en page par défaut est une courtoisie de Format-List ; je préfère sélectionner mes propriétés, et utiliser Format-Table.

Exemple 4 : Get-WmiObject

# Example of Get-WmiObject with default outputGet-WmiObject -Class Win32_NetworkAdapter

Observez (ci-dessus) que le format par défaut prescrit pour Get-WmiObject est Format-List. Cependant, nous pouvons canaliser la sortie dans Format-Table (voir ci-dessous)

Clear-Host# Example of Get-WmiObject with Format-Table outputGet-WmiObject -Class Win32_NetworkAdapter |Format-Table DeviceId, Name, MACAddress -AutoSize

PowerShell Format-Table Parameters

Nous avons déjà vu le paramètre -auto de Format-Table, recherchons maintenant d’autres interrupteurs :

# Extra parameters for PowerShell to Format outputClear-hostGet-Help Format-Table -full

Note 4 : L’un de mes paramètres Format-Table préférés est -GroupBy

Exemple 5 : -GroupBy
Format-Table possède un paramètre appelé -GroupBy, qui offre une méthode d’agrégation des données.

Note 5 : Out-GridView : PowerShell v 2.0 introduit une nouvelle cmdlet pour contrôler l’affichage des données. Voir plus sur la façon de canaliser les résultats dans out-GridView.

Exemple 6 : Sort-object (Peut être abrégé en ‘Sort’)
Une autre technique pour mettre de l’ordre dans la sortie est d’employer Sort-object.

$Proc = Get-Process | Sort-Object -descending BasePriority$Proc | Format-Table Name, HandleCount, BasePriority -auto

Format-Table Alias FT

Avec Microsoft, il y a toujours au moins trois façons de tout faire, ce qui semble être une redondance quand vous êtes un expert, semble être une perspective quand vous êtes un débutant. Un exemple évident est que vous pouvez abréger Format-Table en FT. À mesure que vous augmentez votre gamme de commandes PowerShell, gardez un œil sur un autre alias PowerShell, par exemple, gwmi pour Get-WmiObject et gci (Get-Childitem).

Voici des méthodes alternatives pour atteindre les objectifs ci-dessus, chaque exemple est conçu pour développer votre vision binoculaire, donc voir la cible plus clairement. Par exemple, si vous expérimentez avec format-wide et format-List, vous élargirez votre gamme d’options de formatage.

Guy Recommande : SolarWinds Admin Bundle for Active Directory (OUTIL GRATUIT)

Importer des utilisateurs depuis une feuille de calcul. Il suffit de fournir une liste des utilisateurs avec leurs champs dans la ligne supérieure, et d’enregistrer en tant que fichier .csv. Ensuite, lancez cet utilitaire GRATUIT et faites correspondre vos champs avec les attributs d’AD, cliquez et importez les utilisateurs.

Optionnellement, vous pouvez fournir le nom de l’OU où les nouveaux comptes verront le jour. Téléchargez votre outil d’importation en masse GRATUIT.

SolarWinds Admin Bundle Téléchargez un ensemble d’outils 100% GRATUIT

Si vous avez besoin d’un logiciel d’analyse d’applications plus complet, téléchargez une version d’essai gratuite de SAM (Server & Application Monitor)

Exemples d’alias FT PowerShell

Exemple 7a :

# Example of PowerShell Format output with FTGet-Process | FT ProcessName, Handles, PagedMemorySize -auto

Points d’apprentissage. Vous pouvez remplacer FT par Format-Table. Vous pouvez également rechercher d’autres propriétés, par exemple PagedMemorySize.

Exemple 7b:

Clear-hostGet-Process | Get-Member -Membertype method | FT name

Points d’apprentissage. En plus de la propriété, vous pouvez rechercher la méthode d’un objet. Par exemple, dans d’autres scripts, vous pouvez souhaiter employer la méthode .kill().

Exemple 7c :

Get-Process | FT Name, HandleCount -groupby BasePriority -auto

Points d’apprentissage. Il n’est pas indispensable d’utiliser des variables. Il s’agit d’un exemple plus simple se concentrant sur le commutateur -groupby.

Cmdlet Format-Wide

Comment découvrir d’autres Cmdlets de formatage

Clear-HostGet-Command -verb format

En plus de Format-Table, vous pouvez afficher les données non pas sur une colonne mais sur deux ou trois colonnes. C’est l’option format-wide ou (fw), qui est utile lorsque vous avez une longue liste avec un seul champ, par exemple :

Get-Process | Get-Member -Membertype method | Format-Wide name -column 3.

Format-List

L’autre façon dont PowerShell peut formater la sortie est avec une liste. C’est utile lorsque vous voulez afficher plusieurs propriétés pour un objet. Voici un exemple:

#Example of PowerShell Format-ListGet-Process services | Format-List -property *

Note 6 : Ce qui rend l’utilisation de format-List intéressante, c’est le caractère générique * (étoile).

Voir plus sur Format-List »

Technique de script (cmdlet)

En ce qui concerne notre technique de travail pour Format-Table, nous sommes à la croisée des chemins. Ma méthode de travail préférée consiste à créer des scripts, puis à les exécuter à partir de la ligne de commande PowerShell. L’autre solution consiste à taper et retaper sans cesse les commandes dans le shell. Ma technique prend tout son sens lorsque les commandes sont complexes ; en prime, mes scripts documentent ce que je fais, il est donc facile de se référer et d’affiner les expériences précédentes.

Si vous aussi vous aimez cette méthode de script (cmdlet), alors assurez-vous d’abord que PowerShell permettra au script de s’exécuter, vous ne devez le faire qu’une seule fois, tapez :
Set-ExecutionPolicy RemoteSigned

En supposant que j’ai enregistré l’exemple 2 dans un fichier appelé proc.ps1, ce que je fais, c’est aller à l’invite PS et taper .\proc. Vous devez soit enregistrer le script dans le répertoire de travail, soit utiliser cd pour passer dans le répertoire où le script a été enregistré.

« 

Résumé du tableau de format dans Windows PowerShell

La présentation transforme vraiment la sortie de vos scripts PowerShell. Aussi, lorsque vous obtenez trop d’informations, la réponse est de filtrer et de réduire le nombre de colonnes dans l’affichage. En d’autres occasions, vous devez afficher des propriétés supplémentaires, qui ne sont pas affichées par la commande par défaut. Dans chaque cas, Format-Table vous donne le contrôle sur la présentation de votre sortie.

Bien que Format-Table (ou FT en abrégé), soit une commande omniprésente, elle comporte de nombreux interrupteurs. Avec une application judicieuse de ses nombreux interrupteurs, vous pouvez produire des sorties créatives et efficaces.

Voir d’autres tutoriels de sortie Microsoft PowerShell :

– Accueil PShell – Out-File – Out-GridView – ConvertTo-Csv – ConvertTo-Html – ConvertFrom-Csv

– Tee-Object – Import-CSV – Format-Table – PowerShell Here-.String – ConvertFrom-JSON

– Export-CliXml – Format-List – Read-Host – PowerShell Get-History – -f format – Pipe to file

Veuillez m’envoyer un courriel si vous avez un meilleur exemple de script. Veuillez également signaler toute erreur factuelle, grammaticale ou tout lien brisé, je me ferai un plaisir de corriger la faute.

.

Laisser un commentaire

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