Powershell avoir son propre moteur de formatage. Chaque fois que vous utilisez la cmdlet, vous sortie une liste de System.Management.Automation.PSModuleInfo
objets.
Avant l'impression de l'objet "raw", Powershell vérifier si il y a une mise en forme prédéfinie disponibles pour le type et le cas échéant, de l'appliquer. Ce que vous voyez est le résultat de cette transformation.
Jusqu'à PS 5.1, cela a été fait par le formatage du fichier de configuration, défini comme *.ps1xml fichiers. De PS6.0 et versions plus récentes, formats prédéfinis sont maintenant inclus directement dans le code source, mais vous pouvez toujours créer d'autres format de fichiers que nécessaire.
Vous pouvez afficher les chargés de type de format à l'aide de la Get-FormatData
applet de commande.
Si vous êtes intéressé dans le Get-Module
cmdlet plus précisément, découvrez (Get-FormatData -TypeName System.Management.Automation.PSModuleInfo).FormatViewDefinition
. Vous verrez quelque chose comme ceci:
Name Control
---- -------
Module System.Management.Automation.TableControl
Module System.Management.Automation.WideControl
Module System.Management.Automation.ListControl
Cela signifie que tous les objets de ce type ont des instructions spéciales concernant la façon dont il convient de sortie de son objet. Dans ce cas, il comprend le regroupement de chemin d'accès et d'afficher les colonnes (ModuleType, Version, Nom, ExportedCommands). Powershell n'ont pas choisi d'afficher les propriétés par lui-même, il y a des instructions du type prédéfini sur les éléments à afficher.
Dans le cas de PSModuleInfo
type, nous pouvons voir qu'il y a 3 vues personnalisées pour le type. Un pour la vue de la table (qui est la valeur par défaut affichée), l'un pour la liste et large, qui instruisent ce que pour montrer lorsque vous utilisez Format-List
& Format-Wide
.
À partir de MS doc
Le format d'affichage pour les objets retournés par les commandes
(les applets de commande, les fonctions et les scripts) sont définies à l'aide de mise en forme
les fichiers (format.ps1xml fichiers). Plusieurs de ces fichiers sont fournis par
PowerShell pour définir le format d'affichage pour les objets retournés par
PowerShell-commandes fournies, telles que le Système.Diagnostics.Processus
l'objet retourné par la cmdlet Get-Process. Cependant, vous pouvez également
créer vos propres fichiers de mise en forme pour remplacer la valeur par défaut
les formats d'affichage ou vous pouvez écrire une mise en forme personnalisée fichier à définir
l'affichage des objets retournés par vos propres commandes.
PowerShell utilise les données de ces fichiers de mise en forme afin de déterminer ce qui
est affiché et comment les données affichées est formaté. L'affiche
les données peuvent inclure les propriétés d'un objet ou la valeur d'un script.
Vous pouvez créer vos propres fichiers (*.ps1xml) et de les inclure dans vos modules ou de les charger dans vos séances de modifier la façon dont la sortie est affichée.
Vous pouvez également ajouter une mise en forme à la sortie de vos fonctions par la définition d'un affichage par défaut de l'ensemble (aka quelles propriétés doit être affiché).
Par exemple, prenez cette fonction simple:
Function Get-EmployeesInfos() {
$Output = @(
[PSCustomObject]@{
FirstName = 'RObert'
LastName = 'Samson'
SocialSecurityNumber = '123 344 555'
Age = '32'
Salary = '100000'
},
[PSCustomObject]@{
FirstName = 'Pablo'
LastName = 'Morrison'
SocialSecurityNumber = '123 345 555'
Age = '22'
Salary = '10000'
}
)
# Default display set
$defaultDisplaySet = 'FirstName', 'LastName'
$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet', [string[]]$defaultDisplaySet)
$Output | Add-Member MemberSet PSStandardMembers ([System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet)) -Force
return $Output
return $Output
}
Sans affichage par défaut défini, vous devriez obtenir votre sortie standard avec toutes les propriétés énumérées.
Avec l'affichage par défaut ajouté, voici la nouvelle sortie.
Les deux sorties ne contient les mêmes informations, mais la console ont un formatage spécial est appliqué pour ne montrer que ce qui est le plus important, utile, etc...
Vous pouvez utiliser la mise en forme des vues de:
- La colorisation de sortie
- Créer des arbres
- Changement de la sortie en fonction de la condition
- Ajouter des propriétés virtuelles
- définir la largeur de colonne
- définir affiché titre de la colonne
- etc...
Références:
Mise En Forme De Fichiers Aperçu
4Sysops - objet de mise en forme de la sortie en Powershell avec Format.ps1xml fichiers
Mise À Jour-FormatData