about_Format.ps1xml

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Format.ps1xml

KURZE BESCHREIBUNG

Die Format.ps1xm-Dateien in Windows PowerShell® definieren die Standardanzeige von Objekten in der Windows PowerShell-Konsole. Sie können Ihre eigenen Format.ps1xml-Dateien erstellen, um die Anzeige von Objekten zu ändern oder um die Standardanzeigen für neue Objekttypen zu definieren, die Sie in Windows PowerShell erstellen.

LANGE BESCHREIBUNG

Die Format.ps1xml-Dateien in Windows PowerShell definieren die Standardanzeige von Objekten in Windows PowerShell. Sie können Ihre eigenen Format.ps1xml-Dateien erstellen, um die Anzeige von Objekten zu ändern oder um die Standardanzeigen für neue Objekttypen zu definieren, die Sie in Windows PowerShell erstellen.

Wenn Windows PowerShell ein Objekt anzeigt, verwendet es die Daten in strukturierten Formatierungsdateien, um die Standardanzeige des Objekts zu bestimmen. Die Daten in den Formatierungsdateien bestimmen, ob das Objekt in einer Tabelle oder in einer Liste gerendert wird, und legen fest, welche Eigenschaften standardmäßig angezeigt werden.

Die Formatierung wirkt sich nur auf die Anzeige aus. Sie hat keine Auswirkungen darauf, welche Objekteigenschaften in der Pipeline weitergegeben werden oder wie diese übergeben werden. Format.ps1xml-Dateien können nicht verwendet werden, um das Ausgabeformat für Hash-Tabellen anzupassen.

Windows PowerShell enthält sieben Formatierungsdateien. Diese Dateien befinden sich im Installationsverzeichnis ($pshome). Jede Datei definiert die Anzeige einer Gruppe von Microsoft .NET Framework-Objekten:

Certificate.Format.ps1xml

Objekte im Zertifikatspeicher, z. B. X.509-Zertifikate und Zertifikatspeicher.

DotNetTypes.Format.ps1xml

Andere .NET Framework-Typen, z. B. CultureInfo-, FileVersionInfo- und EventLogEntry-Objekte.

FileSystem.Format.ps1xml

Dateisystemobjekte, wie Dateien und Verzeichnisse.

Help.Format.ps1xml

Hilfeansichten, z. B. ausführliche und vollständige Ansichten, Parameter und Beispiele.

PowerShellCore.format.ps1xml

Objekte, die von Windows PowerShell-Kern-Cmdlets wie Get-Member und Get-History generiert werden.

PowerShellTrace.format.ps1xml

Trace-Objekte, z. B. solche, die durch das Trace-Command-Cmdlet generiert werden.

Registry.Format.ps1xml

Registrierungsobjekte, z. B. Schlüssel und Einträge.

Eine Formatierungsdatei kann vier verschiedene Ansichten von jedem Objekt definieren: Tabelle, Liste, breit und benutzerdefiniert. Wenn zum Beispiel die Ausgabe eines Get-ChildItem-Befehls zu einem Format-List-Befehl geleitet wird, verwendet Format-List die Ansicht in der Datei „FileSystem.format.ps1xml“, um zu ermitteln, wie die Datei- und Ordnerobjekte als Liste anzuzeigen sind.

Wenn eine Formatierungsdatei mehr als eine Ansicht eines Objekts enthält, wendet Windows PowerShell die erste Ansicht an, die es findet.

In einer Format.ps1xml-Datei wird eine Ansicht durch eine Reihe von XML-Tags definiert, die den Namen der Ansicht, den Typ des Objekts, auf das sie angewendet werden kann, die Spaltenüberschriften und die Eigenschaften beschreiben, die im Textteil der Ansicht angezeigt werden. Das Format in Format.ps1xml-Dateien wird angewendet, kurz bevor die Daten für den Benutzer angezeigt werden.

Erstellen neuer Format.ps1xml-Dateien

Die .ps1xml-Dateien, die mit Windows PowerShell installiert werden, sind digital signiert, um Manipulationen zu vermeiden, da die Formatierung Skriptblöcke enthalten kann. Daher müssen Sie, um das Anzeigeformat für eine vorhandene Objektansicht zu ändern oder um Ansichten für neue Objekte hinzuzufügen, Ihre eigenen Format.ps1xml-Dateien erstellen und diese zu Ihrer Windows PowerShell-Sitzung hinzufügen.

Um eine neue Datei zu erstellen, kopieren Sie eine vorhandene Format.ps1xml-Datei. Die neue Datei kann einen beliebigen Namen haben; sie muss jedoch die Dateinamenerweiterung .ps1xml aufweisen. Sie können die Datei in jedem Verzeichnis speichern, das für Windows PowerShell zugänglich ist, es ist jedoch praktisch, die Dateien im Windows PowerShell-Installationsverzeichnis ($pshome) oder in einem Unterverzeichnis des Installationsverzeichnisses zu speichern.

Um die Formatierung einer aktuellen Ansicht zu ändern, suchen Sie die Ansicht in der Formatierungsdatei auf und verwenden dann die Tags, um die Ansicht zu ändern. Um eine Ansicht für einen neuen Objekttyp zu erstellen, erstellen Sie eine neue Ansicht, oder verwenden Sie eine vorhandene Ansicht als Modell. (Die Tags werden im nächsten Abschnitt dieses Themas beschrieben.) Sie können alle anderen Ansichten in der Datei löschen, damit die Änderungen für alle Benutzer offensichtlich sind, die die Datei untersuchen.

Wenn Sie die Änderungen gespeichert haben, verwenden Sie das Update-FormatData-Cmdlet, um die neue Datei zu Ihrer Windows PowerShell-Sitzung hinzuzufügen. Wenn Sie möchten, dass Ihre Ansicht Vorrang gegenüber einer Ansicht hat, die in den integrierten Dateien definiert ist, verwenden Sie den PrependData-Parameter von Update-FormatData. Update-FormatData wirkt sich nur auf die aktuelle Sitzung aus. Um die Änderung auf alle zukünftigen Sitzungen anzuwenden, fügen Sie den Update FormatData-Befehl zu Ihrem Windows PowerShell-Profil hinzu.

Beispiel: Hinzufügen von Calendar-Daten zu Culture-Objekten

In diesem Beispiel wird veranschaulicht, wie die Formatierung der Culture-Objekte (System.Globalization.CultureInfo) geändert werden kann, die durch das Get-Culture-Cmdlet generiert werden. Die Befehle im Beispiel fügen der standardmäßigen Tabellenansichtsanzeige die Calendar-Eigenschaft hinzu.

Der erste Schritt ist das Aufsuchen der Format.ps1xml-Datei, welche die aktuelle Ansicht der Culture Objekte enthält. Der folgende Select-String-Befehl sucht die Datei:

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

Dieser Befehl ermittelt, dass sich die Definition in der Datei „DotNetTypes.Format.ps1xml“ befindet.

Der nächste Befehl kopiert den Inhalt der Datei in eine neue Datei namens „MyDotNetTypes.Format.ps1xml“.

  copy-item DotNetTypes.Format.ps1xml MyDotNetTypes.Format.ps1xml

Öffnen Sie dann die Datei „MyDotNetTypes.Format.ps1xml“ in einem beliebigen XML- oder Texteditor, z. B. Notepad. Suchen Sie den Objektabschnitt „System.Globalization.CultureInfo“. Der folgende XML-Code definiert die Ansichten der CultureInfo-Objekts. Das Objekt besitzt nur eine TableControl-Ansicht.

      <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>

Löschen Sie den Rest der Datei, mit Ausnahme der eröffnenden <?XML>-, <Configuration>- und <ViewDefinitions>-Tags und der schließenden <ViewDefintions>- und <Configuration>-Tags. Wenn Sie die Datei ändern, müssen Sie auch die digitale Signatur löschen.

      <?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>

Als Nächstes erstellen Sie eine neue Spalte für die Calendar-Eigenschaft, indem Sie einen neuen Satz von <TableColumnHeader>-Tags hinzufügen. Der Wert der Calendar-Eigenschaft kann lang werden, weshalb ein Wert von 45 Zeichen verwendet wird, wie im Folgenden gezeigt wird:

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

                        <TableColumnHeader/>
                    </TableHeaders>

Nun fügen Sie den Tabellenzeilen ein neues Spaltenelement hinzu, wie im Folgenden gezeigt wird:

                <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>

Nach dem Speichern und Schließen der Datei verwenden Sie einen Update-FormatData-Befehl, z. B. den folgenden Befehl, um die neue Formatierungsdatei zur aktuellen Sitzung hinzuzufügen. Der Befehl verwendet den PrependData-Parameter, um die neue Datei in einer höheren Rangfolge als die ursprüngliche Datei einzuordnen. (Um weitere Informationen zu Update-FormatData zu erhalten, geben Sie „get-help update-formatdata“ ein.)

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

Um die Änderung zu testen, geben Sie "get-culture" ein und überprüfen dann die Ausgabe, welche die Calendar-Eigenschaft enthält.

      C:\PS> get-culture

      LCID Name  Calendar                               DisplayName
      ---- ----  --------                               -----------
      1033 en-US System.Globalization.GregorianCalendar English (United States)

Der XML-Code in Format.ps1xml-Dateien

Der ViewDefinitions-Abschnitt jeder Format.ps1xml-Datei enthält die <View>-Tags, die jede Ansicht definieren. Ein typisches <View>-Tag enthält die folgenden Tags:

<Name>

Das <Name>-Tag identifiziert den Namen der Ansicht.

<ViewSelectedBy>

Das <ViewSelectedBy>-Tags legt den Objekttyp oder die Objekttypen fest, für welche die Ansicht gilt.

<GroupBy>

Der <GroupBy>-Tag gibt an, wie Elemente in der Ansicht in Gruppen zusammengefasst werden sollen.

<TableControl>

<ListControl>

<WideControl>

<CustomControl>

Diese Tags enthalten die Tags, welche mit <DefaultDisplayProperty> angeben, wie jedes Element angezeigt wird.

Das <ViewSelectedBy>-Tag kann ein <TypeName>-Tag für jeden Objekttyp enthalten, für den die Ansicht gilt. Oder es kann ein <SelectionSetName>-Tag enthalten, das auf einen Auswahlsatz verweist, der an anderer Stelle definiert ist, indem ein <SelectionSet>-Tag verwendet wird.

Das <GroupBy>-Tag enthält ein <PropertyName>-Tag, das die Objekteigenschaft angibt, nach der die Elemente gruppiert werden sollen. Es enthält auch entweder ein <Label>-Tag, das eine Zeichenfolge angibt, die als Bezeichnung für jede Gruppe verwendet werden soll, oder ein <CustomControlName>-Tag, das mithilfe eines <Control>Tags auf ein an anderer Stelle definiertes benutzerdefiniertes Steuerelement verweist. Das <Control>-Tag enthält ein <Name>-Tag und ein <CustomControl>-Tag.

Das <TableControl>-Tag enthält in der Regel die Tags <TableHeaders> und <TableRowEntries>, welche die Formatierung für den Kopf und die Zeilen der Tabelle definieren. Das <TableHeaders>-Tag enthält in der Regel <TableColumnHeader>-Tags, die wiederum <Label>-, <Width>- und <Alignment>-Tags enthalten. Das <TableRowEntries>-Tag enthält <TableRowEntry>-Tags für jede Zeile in der Tabelle. Das <TableRowEntry>-Tag enthält ein <TableColumnItems>-Tag, das wiederum ein <TableColumnItem>-Tag für jede Spalte in der Zeile enthält. In der Regel enthält das <TableColumnItem>-Tag entweder ein <PropertyName>-Tag, das die Objekteigenschaft identifiziert, die an der definierten Position angezeigt werden soll, oder ein <Skriptblock>-Tag, welches Skriptcode enthält, der ein Ergebnis berechnet, das an der Stelle angezeigt werden soll.

Hinweis: Skriptblöcke können auch an anderer Stelle an Stellen verwendet werden, wo berechnete Ergebnisse nützlich sein können.

Das <TableColumnItem>-Tag kann auch ein <FormatString>-Tag enthalten, das angibt, wie die Eigenschaft oder die berechneten Ergebnisse angezeigt werden.

Das <ListControl>-Tag enthält in der Regel ein <ListEntries>-Tag. Das <ListEntries>-Tag enthält ein <ListItems>-Tag. Das <ListItems>-Tag enthält <ListItem>-Tags, welche wiederum <PropertyName>-Tags enthalten. Die <PropertyName>-Tags geben die Objekteigenschaft an, die an der angegebenen Position in der Liste angezeigt werden soll. Wenn die Ansichtsauswahl durch einen Auswahlsatz definiert ist, kann das <ListControl>-Tag auch ein <EntrySelectedBy>-Tag enthalten, das ein oder mehrere <TypeName>-Tags enthält. Diese <TypeName> Tags geben den Objekttyp an, für dessen Anzeige das <ListControl>-Tag vorgesehen ist.

Das <WideControl>-Tag enthält in der Regel ein <WideEntries>-Tag. Das <WideEntries>-Tag enthält ein oder mehrere <WideEntry>-Tags. Ein <WideEntry>-Tag enthält in der Regel ein <PropertyName>-Tag, das die Eigenschaft festlegt, die an der angegebenen Position in der Ansicht angezeigt werden soll. Das <PropertyName>-Tag kann ein <FormatString>-Tag enthalten, das angibt, wie die Eigenschaft angezeigt werden soll.

Das <CustomControl>-Tag ermöglicht Ihnen die Verwendung eines Skriptblocks, um ein Format zu definieren. Ein <CustomControl>-Tag enthält in der Regel ein <CustomEntries>-Tag, das wiederum mehrere <CustomEntry>-Tags enthält. Jedes <CustomEntry>-Tag enthält ein <CustomItem> Tags, das wiederum eine Vielzahl von Tags enthalten kann, welche den Inhalt und die Formatierung der angegebenen Position in der Ansicht festlegen, einschließlich <Text>-, <Indention>-, <ExpressionBinding>- und <NewLine>-Tags.

Update-FormatData

Um Ihre Format.ps1xml-Dateien in eine Windows PowerShell-Sitzung zu laden, verwenden Sie das Update-FormatData-Cmdlet. Wenn Sie möchten, dass die Ansichten aus Ihrer Datei Vorrang gegenüber den Ansichten aus der integrierten Format.ps1xml-Datei erhalten, verwenden Sie den PrependData-Parameter von Update-FormatData. Update-FormatData wirkt sich nur auf die aktuelle Sitzung aus. Um die Änderung auf alle zukünftigen Sitzungen anzuwenden, fügen Sie den Update FormatData-Befehl zu Ihrem Windows PowerShell-Profil hinzu.

Standardanzeigen in Types.ps1xml

Die Standardanzeigen von einigen grundlegenden Objekttypen sind in der Datei „Types.ps1xml“ im Verzeichnis „$pshome“ definiert. Die Knoten heißen „PsStandardMembers“, und die untergeordneten Knoten verwenden einen der folgenden Tags:

<DefaultDisplayProperty>

<DefaultDisplayPropertySet>

<DefaultKeyPropertySet>

Um weitere Informationen zu erhalten, geben Sie den folgenden Befehl ein:

  get-help about_types.ps1xml

Nutzungsverfolgung der Format.ps1xml-Datei

Zum Erkennen von Fehlern beim Laden oder bei der Anwendung von Format.ps1xml-Dateien verwenden Sie das Trace-Command-Cmdlet mit dem folgenden Formatierungskomponenten als Wert des Name-Parameters:

  FormatFileLoading
          UpdateFormatData
          FormatViewBinding

Um weitere Informationen zu erhalten, geben Sie folgende Befehle ein:

          get-help trace-command
          get-help get-tracesource     

Signieren einer Format.ps1xml-Datei

Um die Benutzer Ihrer Format.ps1xml-Datei zu schützen, müssen Sie die Datei mit einer digitalen Signatur signieren. Um weitere Informationen zu erhalten, geben Sie ein:

          get-help about_signing

SIEHE AUCH

Update-FormatData

Trace-Command

Get-TraceSource