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