RUBRIQUE
about_Format.ps1xml
DESCRIPTION COURTE
Les fichiers Format.ps1xml de Windows PowerShell définissent
l'affichage par défaut des objets de sa console. Vous pouvez
créer vos propres fichiers Format.ps1xml pour modifier
l'affichage des objets ou définir des affichages par défaut
pour les types d'objets que vous créez dans Windows PowerShell.
DESCRIPTION LONGUE
Les fichiers Format.ps1xml de Windows PowerShell définissent
l'affichage par défaut de ses objets. Vous pouvez créer vos
propres fichiers Format.ps1xml pour modifier l'affichage des
objets ou définir des affichages par défaut pour les types
d'objets que vous créez dans Windows PowerShell.
Lorsque Windows PowerShell affiche un objet, il utilise les
données des fichiers de mise en forme structurée pour déterminer
l'affichage par défaut de ce dernier. Les données des fichiers de
mise en forme déterminent si l'objet est restitué dans une table
ou dans une liste, et définit les propriétés affichées par défaut.
La mise en forme affecte uniquement l'affichage. Elle ne
détermine pas les propriétés d'objets passées à travers le
pipeline ni la façon dont ces dernières sont passées.
Windows PowerShell inclut sept fichiers de mise en forme. Ces
fichiers se trouvent dans le répertoire d'installation ($pshome).
Chaque fichier définit l'affichage d'un groupe d'objets Microsoft
.NET Framework :
Certificate.Format.ps1xml
Objets du magasin de certificats, tels que les
certificats et les magasins de certificats X.509.
DotNetTypes.Format.ps1xml
Autres types .NET Framework, tels que les objets CultureInfo,
FileVersionInfo et EventLogEntry.
FileSystem.Format.ps1xml
Objets de systèmes de fichiers, tels que des fichiers et
des répertoires.
Help.Format.ps1xml
Vues d'aide, telles que des vues détaillées et complètes,
des paramètres et des exemples.
PowerShellCore.format.ps1xml
Objets générés par les applets de commande principales
Windows PowerShell, telles que Get-Member et Get-History.
PowerShellTrace.format.ps1xml
Objets de trace, tels que ceux générés par l'applet de
commande Trace-Command.
Registry.format.ps1xml
Objets de Registre, tels que les clés et les entrées.
Un fichier de mise en forme permet de définir quatre vues
différentes pour chaque objet : Table (table), Liste (list),
Large (wide) et Complexe (complex). Par exemple, lorsque la
sortie d'une commande Get-ChildItem est dirigée vers une commande
Format-List, Format-List utilise la vue du fichier FileSystem.form
at.ps1xml pour déterminer comment afficher les objets de fichiers
et de dossiers sous forme de liste.
Dans un fichier Format.ps1xml, une vue est définie par un jeu de
balises XML qui décrivent le nom de la vue, le type d'objet
auquel elle peut s'appliquer, les en-têtes de colonnes et les
propriétés qui s'affichent dans le corps de la vue. Le format des
fichiers Format.ps1xml est appliqué juste avant que les données
soient présentées à l'utilisateur.
Création de fichiers Format.ps1xml
Les fichiers .ps1xml installés avec Windows PowerShell sont
signés numériquement pour empêcher la falsification, car la
mise en forme peut inclure des blocs de script. Par conséquent,
pour modifier le format d'affichage d'une vue d'objet existante
ou ajouter des vues pour les nouveaux objets, vous devez créer
vos propres fichiers Format.ps1xml, puis les ajouter à votre
session Windows PowerShell.
Pour créer un fichier, copiez un fichier Format.ps1xml
existant. Les nouveaux fichiers peuvent porter n'importe quel
nom, mais leur nom doit comporter l'extension .ps1xml. Vous
pouvez placer le nouveau fichier dans tout répertoire
accessible à partir de Windows PowerShell, mais il est utile de
placer les fichiers dans le répertoire d'installation Windows
PowerShell ($pshome) ou dans un sous-répertoire du répertoire
d'installation.
Pour changer la mise en forme d'une vue actuelle, localisez la
vue dans le fichier de mise en forme, puis utilisez les balises
pour la modifier. Vous pouvez créer une vue à partir de zéro
pour un nouveau type d'objet ou utiliser une vue existante en
tant que modèle. (Les balises sont décrites dans la section
suivante de cette rubrique.) Vous pouvez supprimer ensuite
toutes les autres vues du fichier afin que les modifications
soient évidentes pour n'importe quel utilisateur examinant le
fichier.
Lorsque vous avez enregistré les modifications, utilisez
l'applet de commande Update-FormatData pour ajouter le nouveau
fichier à votre session Windows PowerShell. Si vous souhaitez
que votre vue soit prioritaire sur une vue définie dans les
fichiers intégrés, utilisez le paramètre PrependData de
l'applet de commande Update-FormatData. Update-FormatData
affecte uniquement la session active. Pour appliquer la
modification à toutes les sessions futures, ajoutez la
commande Update-FormatData à votre profil Windows PowerShell.
Exemple : Ajout de données de calendrier aux objets de culture
Cet exemple montre comment modifier la mise en forme des objets
de culture (System.Globalization.CultureInfo) générés par
l'applet de commande Get-Culture.
Les commandes de l'exemple permettent d'ajouter la propriété
Calendar à la vue Table par défaut des objets de culture.
La première étape consiste à rechercher le fichier
Format.ps1xml qui contient la vue actuelle des objets de
culture. La commande Select-String suivante recherche le fichier :
select-string -path $pshome\*format.ps1xml `
-pattern System.Globalization.CultureInfo
Cette commande indique que la définition se trouve dans le fichier
DotNetTypes.Format.ps1xml.
La commande suivante copie le contenu du fichier dans un
nouveau fichier, MyDotNetTypes.Format.ps1xml.
copy-item DotNetTypes.Format.ps1xml MyDotNetTypes.Format.ps1xml
Ouvrez ensuite le fichier MyDotNetTypes.Format.ps1xml dans tout
éditeur de texte ou XML, tel que le Bloc-notes. Recherchez la
section de l'objet System.Globalization.CultureInfo. Le code
XML ci-dessous définit les vues de l'objet CultureInfo.
L'objet dispose uniquement d'une vue TableControl.
<View>
<Name>System.Globalization.CultureInfo</Name>
<ViewSelectedBy>
<TypeName>Deserialized.System.Globalization.CultureInfo</TypeName>
<TypeName>System.Globalization.CultureInfo</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>LCID</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Name</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>DisplayName</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
Supprimez le reste du fichier, à l'exception des balises
d'ouverture <?XML>, <Configuration> et <ViewDefinitions>,
ainsi que des balises de fermeture <ViewDefintions> et
<Configuration>. Vous devez également supprimer la
signature numérique chaque fois que vous modifiez le fichier.
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<ViewDefinitions>
<View>
<Name>System.Globalization.CultureInfo</Name>
<ViewSelectedBy>
<TypeName>Deserialized.System.Globalization.CultureInfo</TypeName>
<TypeName>System.Globalization.CultureInfo</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>LCID</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Name</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>DisplayName</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
</ViewDefinitions>
</Configuration>
Créez ensuite une colonne pour la propriété Calendar en
ajoutant un nouveau jeu de balises <TableColumnHeader>.
La valeur de la propriété Calendar pouvant être longue,
une valeur de 45 caractères est utilisée comme suit :
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>45</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
À présent, ajoutez un nouvel élément de colonne dans les lignes
de table comme suit :
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>LCID</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Name</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Calendar</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>DisplayName</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
Après avoir enregistré le fichier et l'avoir fermé, utilisez
une commande Update-FormatData, telle que la commande
ci-dessous, pour ajouter le nouveau fichier de format à la
session active. La commande utilise le paramètre PrependData
pour attribuer au nouveau fichier un ordre de précédence
supérieur à celui du fichier d'origine. (Pour plus
d'informations sur Update-FormatData, tapez " get-help
update-formatdata ".)
update-formatdata -prependpath $pshome\MyDotNetTypes.format.ps1xml
Pour tester la modification, tapez " get-culture ", puis
examinez la sortie, qui inclut la propriété Calendar.
C:\PS> get-culture
LCID Name Calendar DisplayName
---- ---- -------- -----------
1033 en-US System.Globalization.GregorianCalendar English (United States)
Contenu XML des fichiers Format.ps1xml
La section ViewDefinitions de chaque fichier Format.ps1xml
contient les balises <View> définissant chaque vue. Une balise
<View> classique comprend les balises suivantes :
<Name>
La balise <Name> identifie le nom de la vue.
<ViewSelectedBy>
La balise <ViewSelectedBy> spécifie le ou les types
d'objets auxquels la vue s'applique.
<GroupBy>
La balise <GroupBy> spécifie comment les éléments de la
vue seront regroupés.
<TableControl>
<ListControl>
<WideControl>
<ComplexControl>
Ces balises contiennent elles-mêmes les balises
spécifiant la façon dont chaque élément sera affiché.
La balise <ViewSelectedBy> peut contenir une balise <TypeName>
pour chaque type d'objet auquel la vue s'applique. Elle peut
également contenir une balise <SelectionSetName> faisant
référence à un ensemble de sélections défini ailleurs à l'aide
d'une balise <SelectionSet>.
La balise <GroupBy> contient une balise <PropertyName>
spécifiant la propriété d'objet selon laquelle les éléments
seront regroupés. Elle inclut également une balise <Label>
spécifiant une chaîne à utiliser comme libellé pour chaque
groupe ou une balise <ComplexControlName> faisant référence
à un contrôle complexe défini ailleurs à l'aide d'une balise
<Control>. La balise <Control> contient une balise <Name> et
une balise <ComplexControl>.
La balise <TableControl> contient généralement des balises
<TableHeaders> et <TableRowEntries> définissant la mise en
forme des en-têtes et des lignes de la table. La balise
<TableHeaders> comporte généralement des balises <TableColumnHea
der> contenant elles-mêmes des balises <Label>, <Width> et
<Alignment>. La balise <TableRowEntries> contient des balises
<TableRowEntry> pour chaque ligne de la table. La balise
<TableRowEntry> comporte une balise <TableColumnItems> qui
contient elle-même une balise <TableColumnItem> pour chaque
colonne de la ligne.
En général, la balise <TableColumnItem> contient une balise
<PropertyName> identifiant la propriété d'objet à afficher à
l'emplacement défini ou une balise <ScriptBlock> contenant un
code de script qui calcule un résultat à afficher à cet
emplacement.
Remarque : les blocs de script peuvent également être employés
ailleurs, à des emplacements où les résultats calculés
s'avèrent éventuellement utiles.
La balise <TableColumnItem> peut également contenir une balise
<FormatString> spécifiant comment la propriété ou les résultats
calculés seront affichés.
La balise <ListControl> comporte en général une balise
<ListEntries>. La balise <ListEntries> inclut une balise
<ListItems>. La balise <ListItems> contient des balises
<ListItem> comportant elles-mêmes des balises <PropertyName>.
Les balises <PropertyName> spécifient la propriété d'objet
à afficher à l'emplacement spécifié dans la liste. Si la
sélection de la vue est définie à l'aide d'un ensemble de
sélections, la balise <ListControl> peut également contenir une
balise <EntrySelectedBy> comportant une ou plusieurs balises
<TypeName>. Ces balises <TypeName> spécifient le type d'objet
que la balise <ListControl> est censée afficher.
La balise <WideControl> contient généralement une balise
<WideEntries>. La balise <WideEntries> inclut une ou plusieurs
balises <WideEntry>. Une balise <WideEntry> contient en général
une balise <PropertyName> spécifiant la propriété à afficher à
l'emplacement spécifié dans la vue. La balise <PropertyName>
peut inclure une balise <FormatString> spécifiant comment la
propriété sera affichée.
La balise <ComplexControl> contient des combinaisons de balises
plus complexes que les autres types de vues. Une balise
<ComplexControl> inclut en général une balise <ComplexEntries>.
Une balise <ComplexEntries> comporte plusieurs balises
<ComplexEntry>. Une balise <ComplexEntry> comporte en général
une balise <ComplexItem>. Cette balise peut à son tour contenir
diverses balises spécifiant le contenu et la mise en forme à
utiliser à l'emplacement spécifié dans la vue, y compris des
balises <Text>, <Indentation>, <ExpressionBinding> et <NewLine>.
Update-FormatData
Pour charger vos fichiers Format.ps1xml dans une session
Windows PowerShell, utilisez l'applet de commande
Update-FormatData. Si vous souhaitez que les vues de votre
fichier soient prioritaires sur les vues du fichier intégré
Format.ps1xml, utilisez le paramètre PrependData de l'applet de
commande Update-FormatData. Update-FormatData affecte
uniquement la session active. Pour appliquer la modification à
toutes les sessions futures, ajoutez la commande Update-FormatDa
ta à votre profil Windows PowerShell.
Affichages par défaut dans Types.ps1xml
Les affichages par défaut de certains types d'objets de base
sont définis dans le fichier Types.ps1xml du répertoire
$pshome. Les nœuds sont nommés PsStandardMembers et les
sous-nœuds utilisent une des balises suivantes :
<DefaultDisplayProperty>
<DefaultDisplayPropertySet>
<DefaultKeyPropertySet>
Pour plus d'informations, tapez la commande suivante :
get-help about_types.ps1xml
Traçage de l'utilisation du fichier Format.ps1xml
Pour détecter des erreurs liées au chargement ou à
l'application des fichiers Format.ps1xml, utilisez l'applet de
commande Trace-Command avec chacun des composants de format
suivants comme valeur du paramètre Name :
FormatFileLoading
UpdateFormatData
FormatViewBinding
Pour plus d'informations, tapez les commandes suivantes :
get-help trace-command
get-help get-tracesource
Signature d'un fichier Format.ps1xml
Pour protéger les utilisateurs de votre fichier Format.ps1xml,
signez ce dernier au moyen d'une signature numérique. Pour plus
d'informations, tapez :
get-help about_signing
VOIR AUSSI
Update-FormatData
Trace-Command
Get-TraceSource