THEMA
about_Format.ps1xml
KURZBESCHREIBUNG
In den Format.ps1xml-Dateien von Windows PowerShell ist die
Standardanzeige von Objekten in der Windows PowerShell-Konsole
definiert. Sie können eigene Format.ps1xml-Dateien erstellen, um
die Anzeige von Objekten zu ändern oder Standardanzeigen für
neue, in Windows PowerShell erstellte Objekttypen zu definieren.
DETAILBESCHREIBUNG
In den Format.ps1xml-Dateien von Windows PowerShell ist die
Standardanzeige von Objekten in Windows PowerShell definiert. Sie
können eigene Format.ps1xml-Dateien erstellen, um die Anzeige von
Objekten zu ändern oder Standardanzeigen für neue, in Windows
PowerShell erstellte Objekttypen zu definieren.
Wenn in Windows PowerShell ein Objekt angezeigt wird, wird anhand
von Daten in strukturierten Formatierungsdateien die
Standardanzeige des Objekts bestimmt. Die Daten in den
Formatierungsdateien bestimmen, ob das Objekt in einer Tabelle
oder einer Liste gerendert wird, und welche Eigenschaften
standardmäßig angezeigt werden.
Die Formatierung wirkt sich nur auf die Anzeige aus. Sie
beeinflusst nicht die Eigenschaften, die über die Pipeline
übergeben werden, oder wie diese übergeben werden.
Windows PowerShell umfasst sieben Formatierungsdateien. Diese
Dateien befinden sich im Installationsverzeichnis ("$pshome").
In jeder Datei ist die Anzeige einer Gruppe von Microsoft .NET
Framework-Objekten definiert:
Certificate.Format.ps1xml
Objekte im Zertifikatspeicher, z. B. X.509-Zertifikate
und Zertifikatspeicher.
DotNetTypes.Format.ps1xml
Andere .NET Framework-Typen, z. B. die Objekte
CultureInfo, FileVersionInfo und EventLogEntry.
FileSystem.format.ps1xml
Dateisystemobjekte, z. B. Dateien und Verzeichnisse.
Help.Format.ps1xml
Hilfsansichten, z. B. ausführliche und vollständige
Ansichten, Parameter und Beispiele.
PowerShellCore.format.ps1xml
Von den Kern-Cmdlets von Windows PowerShell generierte
Objekte, z. B. Get-Member und Get-History.
PowerShellTrace.format.ps1xml
Nachverfolgungsobjekte, z. B. solche, die vom Cmdlet
"Trace-Command" generiert wurden.
Registry.format.ps1xml
Registrierungsobjekte, z. B. Schlüssel und Einträge.
In einer Formatierungsdatei können vier verschiedene Ansichten
jedes Objekts definiert sein: Tabellenansicht, Listenansicht,
Breitformat und Detailansicht. Wenn die Ausgabe des Befehls
"Get-ChildItem" z. B. über die Pipeline an den Befehl
"Format-List" übergeben wird, verwendet Format-List die Ansicht
in der Datei "FileSystem.format.ps1xml", um zu bestimmen, wie die
Datei- und Ordnerobjekte als Liste angezeigt werden.
In Format.ps1xml-Dateien wird eine Ansicht durch eine Reihe von
XML-Tags definiert, die Folgendes beschreiben: den Namen der
Ansicht, den Objekttyp, auf den diese angewendet werden kann, die
Spaltenköpfe und die Eigenschaften, die in der Ansicht angezeigt
werden. Das Format in den Format.ps1xml-Dateien wird erst kurz
vor der Datendarstellung für den Benutzer angewendet.
Erstellen neuer Format.ps1xml-Dateien
Die mit Windows PowerShell installierten PS1XML-Dateien werden
digital signiert, um Manipulationen zu verhindern, da die
Formatierung Skriptblöcke enthalten kann. Um das Anzeigeformat
einer vorhandenen Objektansicht zu ändern oder Ansichten für
neue Objekte hinzuzufügen, erstellen Sie eine eigene
Format.ps1xml-Datei, und fügen Sie diese dann der Windows
PowerShell-Sitzung hinzu.
Zum Erstellen einer neuen Datei kopieren Sie eine vorhandene
Format.ps1xml-Datei. Die neue Datei kann beliebig benannt
werden, jedoch muss sie die Dateinamenerweiterung ".ps1xml"
aufweisen. Sie können die neue Datei in ein beliebiges
Verzeichnis einfügen, auf das Windows PowerShell zugreifen
kann, es ist jedoch sinnvoll, die Dateien im Windows
PowerShell-Installationsverzeichnis ("$pshome") oder in einem
Unterverzeichnis des Installationsverzeichnisses zu speichern.
Zum Ändern der Formatierung für eine aktuelle Ansicht suchen
Sie die Ansicht in der Formatierungsdatei, und ändern Sie die
Ansicht dann über die Tags. Wenn Sie für einen neuen Objekttyp
eine Ansicht erstellen möchten, 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 dann alle anderen Ansichten in der
Datei löschen, sodass die Änderungen jedem Benutzer, der die
Datei untersucht, klar angezeigt werden.
Wenn Sie die Änderungen gespeichert haben, fügen Sie die neue
Datei mit dem Cmdlet "Update-FormatData" der Windows
PowerShell-Sitzung hinzu. Wenn die Ansicht Vorrang gegenüber
den in den integrierten Dateien definierten Ansichten haben
soll, verwenden Sie den PrependData-Parameter von
Update-FormatData. Update-FormatData wirkt sich auf nur die
aktuelle Sitzung aus. Fügen Sie dem Windows PowerShell-Profil
den Befehl "Update-FormatData" hinzu, um die Änderung für alle
zukünftigen Sitzungen zu übernehmen.
Beispiel: Hinzufügen von Kalenderdaten zu Culture-Objekten
In diesem Beispiel wird gezeigt, wie die Formatierung der vom
Cmdlet "Get-Culture" generierten Culture-Objekte (System.Globali
zation.CultureInfo) geändert wird.
Mit den im Beispiel verwendeten Befehlen fügen Sie der
Standardtabellenansicht von Culture-Objekten die Calendar-Eigens
chaft hinzu.
Der erste Schritt besteht darin, die Format.ps1xml-Datei zu
suchen, die die aktuelle Ansicht der Culture-Objekte enthält.
Mit dem folgenden Befehl "Select-String" suchen Sie die Datei:
select-string -path $pshome\*format.ps1xml `
-pattern System.Globalization.CultureInfo
Dieser Befehl ergibt, dass sich die Definition in der Datei
"DotNetTypes.Format.ps1xml" befindet.
Mit dem nächsten Befehl kopieren Sie den Dateiinhalt in eine
neue Datei, "MyDotNetTypes.Format.ps1xml".
copy-item DotNetTypes.Format.ps1xml MyDotNetTypes.Format.ps1xml
Öffnen Sie danach die Datei "MyDotNetTypes.Format.ps1xml" in
einem beliebigen XML- oder Text-Editor, z. B. Microsoft Editor.
Suchen Sie den Abschnitt zum System.Globalization.CultureInfo-Ob
jekt. Das folgende XML definiert die Ansichten des
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 öffnenden Tags
<?XML>, <Configuration> und <ViewDefinitions> sowie der
schließenden Tags <ViewDefinitions> und <Configuration>. Sie
müssen stets auch die
digitale Signatur löschen, wenn Sie die Datei ändern.
<?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>
Erstellen Sie als Nächstes 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 sein, daher werden
45 Zeichen wie folgt als Wert verwendet:
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>45</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
Fügen Sie in den Tabellenzeilen nun wie folgt ein neues
Spaltenelement hinzu:
<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>
Fügen Sie nach dem Speichern und Schließen der Datei mit einem
Befehl vom Typ "Update-FormatData", z. B. dem folgenden Befehl,
die neue Formatdatei der aktuellen Sitzung hinzu. Mit dem
Befehl wird der PrependData-Parameter verwendet, um die neue
Datei an einer höheren Stelle in der Rangfolge einzufügen als
die ursprüngliche Datei. (Weitere Informationen zu
Update-FormatData erhalten Sie mit dem Befehl "get-help
update-formatdata".)
update-formatdata -prependpath $pshome\MyDotNetTypes.format.ps1xml
Zum Testen der Änderung geben Sie "get-culture" ein, und
überprüfen Sie dann die Ausgabe, die die Calendar-Eigenschaft
umfasst.
C:\PS> get-culture
LCID Name Calendar DisplayName
---- ---- -------- -----------
1031 de-DE System.Globalization.GregorianCalendar Deutsch (Deutschland)
Das XML in Format.ps1xml-Dateien
Der Abschnitt "ViewDefinitions" jeder Format.ps1xml-Datei
enthält die <View>-Tags, in denen die einzelnen Ansichten
definiert sind. Ein typisches <View>-Tag enthält die folgenden Tags:
<Name>
Das <Name>-Tag, das den Namen der Ansicht angibt.
<ViewSelectedBy>
Das <ViewSelectedBy>-Tag gibt die Objekttypen an, auf
die die Ansicht angewendet wird.
<GroupBy>
Das <GroupBy> Tag gibt an, wie die Elemente in der Ansicht
zu Gruppen zusammengefasst werden.
<TableControl>
<ListControl>
<WideControl>
<ComplexControl>
Diese Tags enthalten die Tags, in denen angegeben ist,
wie die einzelnen Elemente angezeigt werden.
Das <ViewSelectedBy>-Tag kann ein <Typname>-Tag für jeden
Objekttyp enthalten, für den die Ansicht gilt. Es kann auch ein
<SelectionSetName>-Tag enthalten, das auf einen Auswahlsatz verweist,
der an einer anderen Stelle durch ein <SelectionSet>-Tag definiert wird.
Das <GroupBy>-Tag enthält ein <PropertyName>-Tag, das die
Objekteigenschaft angibt, nach der Elemente gruppiert werden.
Er enthält außerdem ein <Label>-Tag, das eine Zeichenfolge
angibt, die als Bezeichnung für die einzelnen Gruppen verwendet
wird, oder ein <ComplexControlName>-Tag, das auf ein komplexes
Steuerelement verweist, das an anderer Stelle durch ein
<Control>-Tag definiert wird. Das <Control>-Tag enthält ein
<Name>-Tag und ein <ComplexControl>-Tag.
Das <TableControl>-Tag enthält üblicherweise die Tags
<TableHeaders> und <TableRowEntries>, in denen die Formatierung
der Tabellenköpfe und -zeilen festgelegt ist. Das
<TableHeaders>-Tag enthält in der Regel <TableColumnHeader>-Tags,
die wiederum die Tags <Label>, <Width> und <Alignment>
enthalten. Das <TableRowEntries>-Tag enthält <TableRowEntry>-Tags
für jede Zeile in der Tabelle. Der <TableRowEntry>-Tag enthält ein
<TableColumnItems>-Tag mit einem <TableColumnItem>-Tag für jede
Spalte in der Zeile.
Das <TableColumnItem>-Tag enthält normalerweise ein
<PropertyName>-Tag zur Angabe der Objekteigenschaft, die an der
angegebenen Position angezeigt werden soll, oder ein
<ScriptBlock>-Tag mit einem Skriptcode zur Berechnung eines
Ergebnisses, das an der Position angezeigt werden soll.
Hinweis: Skriptblöcke können auch an anderen Stellen verwendet
werden, an denen berechnete Ergebnisse gewünscht werden.
Das <TableColumnItem>-Tag kann zudem ein <FormatString>-Tag
enthalten, das angibt, wie die Eigenschaft oder die berechneten
Ergebnisse angezeigt werden sollen.
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, die <PropertyName>-Tags
enthalten. Die <PropertyName>-Tags geben die Objekteigenschaftan,
die an der angegebenen Position in der Liste angezeigt
werden soll. Wenn die Ansichtsauswahl über eine Auswahlmenge
definiert wird, kann das <ListControl>-Tag auch ein
<EntrySelectedBy>-Tag mit einem oder mehreren <TypeName>-Tags
enthalten. Diese <Typname>-Tags geben den Objekttyp an, der im
<ListControl>-Tag angezeigt werden soll.
Das <WideControl>-Tag enthält in der Regel ein <WideEntries>-Tag.
Das <WideEntries>-Tag enthält mindestens ein <WideEntry>-Tag.
Das <WideEntry>-Tag enthält meist ein <PropertyName>-Tag.
Dieses gibt die Eigenschaft an, 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 <ComplexControl>-Tag enthält komplexere Tag-Kombinationen
als andere Ansichtstypen. Das <ComplexEntry>-Tag enthält
normalerweise ein <ComplexItem>-Tag. Das <ComplexEntries>-Tag
enthält mehrere <ComplexEntry>-Tags. Das <ComplexEntry>-Tag
enthält normalerweise ein <ComplexItem>-Tag. Dieses Tag kann
wiederum unterschiedliche Tags enthalten, die den Inhalt und
die Formatierung für die angegebene Position in der Ansicht
angeben, einschließlich der Tags <Text>, <Indentation>,
<ExpressionBinding> und <NewLine>.
Update-FormatData
Zum Laden der Format.ps1xml-Dateien in eine Windows
PowerShell-Sitzung verwenden Sie das Cmdlet "Update-FormatData".
Wenn die Ansichten in der Datei Vorrang gegenüber den
Ansichten in der integrierten Format.ps1xml-Datei haben soll,
verwenden Sie den PrependData-Parameter von Update-FormatData.
Update-FormatData wirkt sich auf nur die aktuelle Sitzung aus.
Fügen Sie dem Windows PowerShell-Profil den Befehl
"Update-FormatData" hinzu, um die Änderung für alle
zukünftigen Sitzungen zu übernehmen.
Standardanzeigen in "Types.ps1xml"
Die Standardanzeigen einiger grundlegender Objekttypen werden
in der Datei "Types.ps1xml" im Verzeichnis "$pshome" definiert.
Die Knoten werden mit "PsStandardMembers" bezeichnet, und für
die untergeordneten Knoten wird eines der folgenden Tags verwendet:
<DefaultDisplayProperty>
<DefaultDisplayPropertySet>
<DefaultKeyPropertySet>
Geben Sie den folgenden Befehl ein, um weitere Informationen zu
erhalten:
get-help about_types.ps1xml
Nachverfolgen der Verwendung von Format.ps1xml-Dateien
Um Fehler beim Laden oder Anwenden von Format.ps1xml-Dateien zu
erkennen, verwenden Sie das Cmdlet "Trace-Command" mit einem
der folgenden Formatkomponenten als Wert des Name-Parameters:
FormatFileLoading
UpdateFormatData
FormatViewBinding
Geben Sie die folgenden Befehle ein, um weitere Informationen
zu erhalten:
get-help trace-command
get-help get-tracesource
Signieren einer Format.ps1xml-Datei
Zum Schutz der Benutzer der Format.ps1xml-Datei können Sie die
Datei mit einer digitalen Signatur signieren. Weitere
Informationen erhalten Sie mit folgendem Befehl:
get-help about_signing
SIEHE AUCH
Update-FormatData
Trace-Command
Get-TraceSource