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