about_Format.ps1xml

Mis à jour: mai 2014

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

RUBRIQUE

about_Format.ps1xml

DESCRIPTION COURTE

Les fichiers Format.ps1xml dans Windows PowerShell® définissent l'affichage par défaut des objets dans la console Windows PowerShell. Vous pouvez créer vos propres fichiers Format.ps1xml pour modifier l'affichage des objets ou pour définir les affichages par défaut d'autres types d'objet que vous créez dans Windows PowerShell.

DESCRIPTION DÉTAILLÉE

Les fichiers Format.ps1xml dans Windows PowerShell définissent l'affichage par défaut des objets dans Windows PowerShell. Vous pouvez créer vos propres fichiers Format.ps1xml pour modifier l'affichage des objets ou pour définir les affichages par défaut d'autres types d'objet que vous créez dans Windows PowerShell.

Pour afficher un objet, Windows PowerShell se base sur les données des fichiers de mise en forme structurés pour déterminer l'affichage par défaut de l'objet. Les données des fichiers de mise en forme déterminent si l'objet doit être affiché dans un tableau ou dans une liste, et quelles propriétés sont affichées par défaut.

La mise en forme concerne uniquement la façon dont l'objet est affiché. Elle ne détermine pas les propriétés d'objet transmises dans le pipeline ni le mode de leur transmission. Les fichiers Format.ps1xml ne permettent pas de personnaliser le format de sortie des tables de hachage.

Windows PowerShell intègre 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 X.509 et les magasins de certificats.

DotNetTypes.Format.ps1xml

Autres types .NET Framework, tels que les objets CultureInfo, FileVersionInfo et EventLogEntry.

FileSystem.Format.ps1xml

Objets système de fichier, tels que les fichiers et les répertoires.

Help.Format.ps1xml

Vues d'aide, telles que les vues détaillées et complètes, les paramètres et les exemples.

PowerShellCore.format.ps1xml

Objets générés par les applets de commande Windows PowerShell de base, telles que Get-Member et Get-History.

PowerShellTrace.format.ps1xml

Objets 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 peut définir quatre affichages différents de chaque objet : tableau, liste, large et personnalisé. Par exemple, quand la sortie d'une commande Get-ChildItem est envoyée vers une commande Format-List, Format-List utilise l'affichage défini dans le fichier FileSystem.format.ps1xml pour déterminer comment afficher les objets fichier et dossier sous forme de liste.

Si le fichier de mise en forme définit plusieurs affichages pour un objet, Windows PowerShell applique le premier affichage spécifié.

Dans un fichier Format.ps1xml, un affichage est défini par un ensemble de balises XML qui indiquent le nom de l'affichage, le type d'objet auquel l'affichage peut être appliqué, les en-têtes de colonne, et les propriétés affichées dans le corps de l'affichage. La mise en forme définie dans les fichiers Format.ps1xml est appliquée juste avant de présenter les donné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 toute falsification, car la mise en forme peut inclure des blocs de script. Par conséquent, pour modifier la mise en forme d'un affichage d'objet existant, ou pour ajouter des affichages pour les nouveaux objets, créez vos propres fichiers Format.ps1xml et ajoutez-les à votre session Windows PowerShell.

Pour créer un fichier, copiez un fichier Format.ps1xml existant. Attribuez au nouveau fichier un nom de votre choix, avec l'extension de nom de fichier .ps1xml. Copiez le nouveau fichier dans un répertoire accessible à Windows PowerShell, de préférence dans le répertoire d'installation de Windows PowerShell ($pshome) ou dans un de ses sous-répertoires.

Pour modifier la mise en forme de l'affichage actuel, recherchez l'affichage dans le fichier de mise en forme et modifiez-le à l'aide de balises. Pour définir un affichage pour un nouveau type d'objet, créez-en un ou servez-vous d'un affichage existant comme modèle. (Les balises sont décrites dans la section suivante de cette rubrique.) Vous pouvez ensuite supprimer tous les autres affichages dans le fichier pour que les utilisateurs voient rapidement les modifications apportées.

Après avoir enregistré les modifications, utilisez l'applet de commande Update-FormatData pour ajouter le nouveau fichier à votre session Windows PowerShell. Si vous souhaitez rendre votre affichage prioritaire par rapport à un affichage défini dans les fichiers intégrés, spécifiez le paramètre PrependData dans Update-FormatData. Update-FormatData s'applique uniquement à la session active. Pour appliquer la modification à toutes les sessions ultérieures, ajoutez la commande Update-FormatData à votre profil Windows PowerShell.

Exemple : ajout de données de calendrier aux objets culture

Cet exemple montre comment modifier la mise en forme des objets culture (System.Globalization.CultureInfo) générés par l'applet de commande Get-Culture. Les commandes de l'exemple ajoutent la propriété Calendar à l'affichage tableau par défaut des objets culture.

La première étape consiste à trouver le fichier Format.ps1xml qui contient l'affichage actuel des objets culture. La commande Select-String suivante recherche le fichier :

  select-string -path $pshome\*format.ps1xml `
              -pattern System.Globalization.CultureInfo

Le résultat de 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

Ensuite, ouvrez le fichier MyDotNetTypes.Format.ps1xml dans un éditeur XML ou de texte, tel que le Bloc-notes. Recherchez la section de l'objet System.Globalization.CultureInfo. Le code XML suivant définit les affichages de l'objet CultureInfo. L'objet a un seul affichage 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 tout le contenu du fichier, à l'exception des balises d'ouverture <?XML>, <Configuration> et <ViewDefinitions>, et des balises de fermeture <ViewDefinitions> et <Configuration>. Vous devez également supprimer la signature numérique dès 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>

Ensuite, créez une colonne pour la propriété Calendar en ajoutant plusieurs nouvelles balises <TableColumnHeader>. Comme la valeur de la propriété Calendar peut être longue, définissez une valeur de 45 caractères, comme suit :

                <TableControl>
                    <TableHeaders>
                        <TableColumnHeader>
                            <Width>16</Width>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Width>16</Width>
                        </TableColumnHeader>
                 
                        <TableColumnHeader>
                            <Width>45</Width>
                        </TableColumnHeader>

                        <TableColumnHeader/>
                    </TableHeaders>

Ajoutez maintenant un nouvel élément de colonne dans les lignes du tableau, 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é et fermé le fichier, utilisez une commande Update-FormatData, telle que la commande suivante, pour ajouter le nouveau fichier de mise en forme à la session active. La commande utilise le paramètre PrependData pour rendre le nouveau fichier prioritaire par rapport au fichier initial. (Pour plus d'informations sur Update-FormatData, tapez « get-help update-formatdata ».)

  update-formatdata -prependpath $pshome\MyDotNetTypes.format.ps1xml

Pour tester les modifications, tapez « get-culture » et 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)

Balises XML dans les fichiers Format.ps1xml

La section ViewDefinitions de chaque fichier Format.ps1xml contient les balises <View> qui définissent chaque affichage. Une balise <View> standard inclut les balises suivantes :

<Name>

La balise <Name> spécifie le nom de l'affichage.

<ViewSelectedBy>

La balise <ViewSelectedBy> spécifie chaque type d'objet auquel s'applique l'affichage.

<GroupBy>

La balise <GroupBy> spécifie comment regrouper les éléments dans l'affichage.

<TableControl>

<ListControl>

<WideControl>

<CustomControl>

Ces balises contiennent les balises <DefaultDisplayProperty> qui spécifient l'affichage par défaut de chaque élément.

La balise <ViewSelectedBy> peut contenir une balise <TypeName> pour chaque type d'objet auquel s'applique l'affichage. Elle peut aussi contenir une balise <SelectionSetName> qui référence un jeu de sélection défini ailleurs à l'aide de la balise <SelectionSet>.

La balise <GroupBy> contient une balise <PropertyName> qui spécifie la propriété d'objet selon laquelle les éléments doivent être regroupés. Elle contient également une balise <Label> qui spécifie la chaîne à utiliser comme étiquette pour chaque groupe ou une balise <CustomControlName> qui référence un contrôle personnalisé défini ailleurs à l'aide d'une balise <Control>. La balise <Control> contient une balise <Name> et une balise <CustomControl>.

La balise <TableControl> contient généralement des balises <TableHeaders> et <TableRowEntries> qui définissent la mise en forme des en-têtes et des lignes du tableau. La balise <TableHeaders> contient généralement des balises <TableColumnHeader>, elles-mêmes contenant des balises <Label>, <Width> et <Alignment>. La balise <TableRowEntries> contient des balises <TableRowEntry> pour chaque ligne du tableau. La balise <TableRowEntry> contient une balise <TableColumnItems>, elle-même contenant une balise <TableColumnItem> pour chaque colonne de la ligne. En général, la balise <TableColumnItem> contient soit une balise <PropertyName> qui identifie la propriété d'objet à afficher à l'emplacement défini, soit une balise <ScriptBlock> qui contient le code de script donnant un résultat à afficher à l'emplacement.

Remarque : les blocs de script peuvent également être utilisés à d'autres emplacements où les résultats obtenus sont utiles.

La balise <TableColumnItem> peut aussi contenir une balise <FormatString> qui spécifie l'affichage de la propriété ou des résultats obtenus.

La balise <ListControl> contient généralement une balise <ListEntries>. La balise <ListEntries> contient une balise <ListItems>. La balise <ListItems> contient des balises <ListItem>, elles-mêmes contenant 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 l'affichage est définie à l'aide d'un jeu de sélection, la balise <ListControl> peut également contenir une balise <EntrySelectedBy> contenant une ou plusieurs balises <TypeName>. Ces balises <TypeName> spécifient le type d'objet que la balise <ListControl> doit afficher.

La balise <WideControl> contient généralement une balise <WideEntries>. La balise <WideEntries> contient une ou plusieurs balises <WideEntry>. Une balise <WideEntry> contient généralement une balise <PropertyName> qui spécifie la propriété à afficher à l'emplacement spécifié dans l'affichage. La balise <PropertyName> peut contenir une balise <FormatString> qui spécifie le mode d'affichage de la propriété.

Avec la balise <CustomControl>, vous pouvez utiliser un bloc de script pour définir un format. Une balise <CustomControl> contient généralement une balise <CustomEntries>, elle-même contenant plusieurs balises <CustomEntry>. Chaque balise <CustomEntry> contient des balises <CustomItem>. Celles-ci peuvent à leur tour contenir différentes balises qui spécifient le contenu et la mise en forme de l'emplacement spécifié dans l'affichage, telles que 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 rendre les affichages définis dans votre fichier prioritaires par rapport aux affichages du fichier Format.ps1xml intégré, spécifiez le paramètre PrependData dans Update-FormatData. Update-FormatData s'applique uniquement à la session active. Pour appliquer la modification à toutes les sessions ultérieures, ajoutez la commande Update-FormatData à votre profil Windows PowerShell.

Affichages par défaut dans Types.ps1xml

Les affichages par défaut pour certains types d'objet 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 l'une des balises suivantes :

<DefaultDisplayProperty>

<DefaultDisplayPropertySet>

<DefaultKeyPropertySet>

Pour plus d'informations, tapez la commande suivante :

  get-help about_types.ps1xml

Suivi de l'utilisation du fichier Format.ps1xml

Pour détecter les erreurs dans le chargement ou l'application des fichiers Format.ps1xml, utilisez l'applet de commande Trace-Command en attribuant au paramètre Name l'une des valeurs d'élément de format suivantes :

  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 l'utilisation de votre fichier Format.ps1xml, signez le fichier à l'aide d'une signature numérique. Pour plus d’informations, tapez :

          get-help about_signing

VOIR AUSSI

Update-FormatData

Trace-Command

Get-TraceSource