about_Format.ps1xml
簡単な説明
PowerShell 6 以降、オブジェクトの既定のビューは PowerShell ソース コードで定義されています。
独自 Format.ps1xml
のファイルを作成して、オブジェクトの表示を変更したり、PowerShell で作成する新しいオブジェクトの種類の既定の表示を定義したりできます。
長い説明
PowerShell 6 以降、既定のビューは PowerShell ソース コードで定義されています。 PowerShell 5.1 以前のバージョンのファイルは Format.ps1xml
、PowerShell 6 以降のバージョンには存在しません。
PowerShell ソース コードは、PowerShell コンソールでのオブジェクトの既定の表示を定義します。 独自 Format.ps1xml
のファイルを作成して、オブジェクトの表示を変更したり、PowerShell で作成する新しいオブジェクトの種類の既定の表示を定義したりできます。
PowerShell は、オブジェクトを表示するときに、構造化書式設定ファイル内のデータを使用して、オブジェクトの既定の表示を決定します。 書式設定ファイル内のデータによって、オブジェクトがテーブルまたはリストのどちらでレンダリングされるかが決まります。また、既定で表示されるプロパティが決まります。
書式設定は表示にのみ影響します。 パイプラインに渡されるオブジェクト プロパティや、それらが渡される方法には影響しません。 Format.ps1xml
ファイルを使用してハッシュ テーブルの出力形式をカスタマイズすることはできません。
.ps1xml
書式設定ファイルでは、各オブジェクトの 4 つの異なるビューを定義できます。
- テーブル
- List
- Wide
- Custom
たとえば、コマンドの Get-ChildItem
出力をコマンドに Format-List
パイプ処理する場合、 Format-List
ソース コードで定義されているリスト ビューを使用して、ファイル オブジェクトとフォルダー オブジェクトをリストとして表示する方法を決定します。
書式設定ファイルにオブジェクトの複数のビューが含まれている場合、PowerShell は最初に見つけたビューを適用します。
カスタム Format.ps1xml
ファイルでは、ビューは、ビューの名前、適用できるオブジェクトの種類、列ヘッダー、およびビューの本文に表示されるプロパティを記述する XML タグのセットによって定義されます。 ファイル内の Format.ps1xml
形式は、データがユーザーに表示される直前に適用されます。
新しい Format.ps1xml ファイルの作成
既存のオブジェクト ビューの表示形式を変更したり、新しいオブジェクトのビューを追加したりするには、独自 Format.ps1xml
のファイルを作成して PowerShell セッションに追加します。
カスタム ビューを Format.ps1xml
定義するファイルを作成するには、 Get-FormatData コマンドレットと Export-FormatData コマンドレットを使用します。 テキスト エディターを使用してファイルを編集します。 ファイルは、 のサブディレクトリなど、PowerShell がアクセスできる任意の $HOME
ディレクトリに保存できます。
現在のビューの書式設定を変更するには、書式設定ファイルでビューを見つけて、タグを使用してビューを変更します。 新しいオブジェクトタイプのビューを作成するには、新しいビューを作成するか、既存のビューをモデルとして使用します。 タグについては、次のセクションで説明します。 その後、ファイル内の他のすべてのビューを削除して、ファイルを調べるすべてのユーザーが変更を明確にすることができます。
変更を保存したら、 Update-FormatData を使用して新しいファイルを PowerShell セッションに追加します。 組み込みファイルで定義されているビューよりもビューを優先する場合は、 PrependPath パラメーターを使用します。 Update-FormatData
は現在のセッションにのみ影響します。 今後のすべてのセッションを変更するには、PowerShell プロファイルに Update-FormatData
コマンドを追加します。
例: カルチャ オブジェクトに予定表データを追加する
この例では、現在の PowerShell セッションで コマンドレットによってGet-Culture
生成されたカルチャ オブジェクト System.Globalization.CultureInfo の書式設定を変更する方法を示します。 この例のコマンドは、カルチャ オブジェクトの既定のテーブル ビュー表示に Calendar プロパティを追加します。
まず、ソース コード ファイルからフォーマット データを取得し、カルチャ オブジェクトの現在のビューを含むファイルを作成 Format.ps1xml
します。
Get-FormatData -TypeName System.Globalization.CultureInfo |
Export-FormatData -Path $HOME\Format\CultureInfo.Format.ps1xml
CultureInfo.Format.ps1xml
Visual Studio Code などの任意の XML エディターまたはテキスト エディターでファイルを開きます。 次の XML は、 CultureInfo オブジェクトのビューを定義します。
ファイルは CultureInfo.Format.ps1xml
次のサンプルのようになります。
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<ViewDefinitions>
<View>
<Name>System.Globalization.CultureInfo</Name>
<ViewSelectedBy>
<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>
新しいタグセット<TableColumnHeader>
を追加して、Calendar プロパティの新しい列をCreateします。 Calendar プロパティの値は長い場合があるため、 として 45 文字の値を<Width>
指定します。
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>45</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
と <PropertyName
タグを使用して、テーブル行に Calendar の新しい列項目を<TableColumnItem>
追加します。
<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>
ファイルを保存して閉じます。 を使用して Update-FormatData
、新しいフォーマット ファイルを現在の PowerShell セッションに追加します。
次の使用例は、 PrependPath パラメーターを使用して、新しいファイルを元のファイルよりも高い優先順位で配置します。 詳細については、「 Update-FormatData」を参照してください。
Update-FormatData -PrependPath $HOME\Format\CultureInfo.Format.ps1xml
変更をテストするには、Calendar プロパティを含む出力を入力Get-Culture
して確認します。
Get-Culture
LCID Name Calendar DisplayName
---- ---- -------- -----------
1033 en-US System.Globalization.GregorianCalendar English (United States)
Format.ps1xml ファイル内の XML
完全なスキーマ定義は、GitHub の PowerShell ソース コード リポジトリの Format.xsd で確認できます。
各ファイルの ViewDefinitions セクションには、各 Format.ps1xml
ビューを <View>
定義するタグが含まれています。 一般的な <View>
タグには、次のタグが含まれます。
<Name>
はビューの名前を識別します。<ViewSelectedBy>
は、ビューが適用されるオブジェクトの種類または型を指定します。<GroupBy>
は、ビュー内の項目をグループで結合する方法を指定します。<TableControl>
、<ListControl>
、<WideControl>
、および には、<CustomControl>
各項目の表示方法を指定するタグが含まれています。
ViewSelectedBy タグ
タグには <ViewSelectedBy>
、ビューが <TypeName>
適用されるオブジェクトの種類ごとにタグを含めることができます。 または、タグを使用して他の <SelectionSetName>
場所で定義されている選択セットを参照するタグを <SelectionSet>
含めることができます。
GroupBy タグ
タグには <GroupBy>
、項目を <PropertyName>
グループ化するオブジェクト プロパティを指定するタグが含まれています。 また、各グループの <Label>
ラベルとして使用する文字列を指定するタグ、または <CustomControlName>
タグを使用して <Control>
他の場所で定義されているカスタム コントロールを参照するタグも含まれます。 タグには <Control>
、 <Name>
タグとタグが <CustomControl>
含まれています。
TableControlTag
通常、 <TableControl>
タグには、テーブルの <TableHeaders>
頭と <TableRowEntries>
行の書式設定を定義する タグと タグが含まれます。 タグには<TableHeaders>
通常、<TableColumnHeader>
および <Alignment>
タグを含むタグが含<Label>
<Width>
まれます。 タグには <TableRowEntries>
、テーブル内の <TableRowEntry>
各行のタグが含まれています。 タグには <TableRowEntry>
、行の <TableColumnItems>
各列のタグを <TableColumnItem>
含むタグが含まれています。 通常、タグには<PropertyName>
、<TableColumnItem>
定義された場所に表示されるオブジェクト プロパティを識別するタグ、または<ScriptBlock>
場所に表示される結果を計算するスクリプト コードを含むタグが含まれます。
注意
スクリプト ブロックは、計算結果が役立つ場所の他の場所でも使用できます。
タグには <TableColumnItem>
、プロパティまたは計算結果の表示方法を指定するタグを含 <FormatString>
めることもできます。
ListControl タグ
通常、 <ListControl>
タグには タグが <ListEntries>
含まれます。 タグには <ListEntries>
タグが <ListEntry>
含まれています。 タグには <ListEntry>
タグが <ListItems>
含まれています。 タグには <ListItems>
、タグを <ListItem>
含むタグが含まれています <PropertyName>
。 タグは <PropertyName>
、リスト内の指定した場所に表示されるオブジェクト プロパティを指定します。 ビューの選択が選択セットを使用して定義されている場合、 タグと <ListEntry>
タグには、<ListControl>
1 つ以上<TypeName>
のタグを<EntrySelectedBy>
含むタグを含めることもできます。 これらのタグは <TypeName>
、タグが表示されるオブジェクトの <ListControl>
種類を指定します。
WideControl タグ
通常、 <WideControl>
タグには タグが <WideEntries>
含まれます。 タグには <WideEntries>
、1 つ以上 <WideEntry>
のタグが含まれています。 タグには <WideEntry>
1 つの <WideItem>
タグが含まれています。
タグには<WideItem>
、タグまたは<ScriptBlock>
タグを<PropertyName>
含める必要があります。 タグは <PropertyName>
、ビュー内の指定した場所に表示するプロパティを指定します。 タグは <ScriptBlock>
、ビュー内の指定した場所で評価および表示するスクリプトを指定します。
タグには <WideItem>
、 プロパティの <FormatString>
表示方法を指定するタグを含めることができます。
CustomControl タグ
<CustomControl>
タグを使用すると、スクリプト ブロックを使用して形式を定義できます。 通常、<CustomControl>
タグには複数<CustomEntry>
のタグを<CustomEntries>
含むタグが含まれます。 各<CustomEntry>
タグには<CustomItem>
、ビュー内の指定した場所の内容と書式設定を指定するさまざまなタグ (、 <Indentation>
<NewLine>
<ExpressionBinding>
、 タグなど) を含めることができるタグが含<Text>
まれています。
トレース形式.ps1xml ファイルの使用
ファイルの読み込みまたはアプリケーションのエラーを検出するには、Name パラメーターのFormat.ps1xml
値として次のいずれかの形式コンポーネントで コマンドレットを使用Trace-Command
します。
- FormatFileLoading
- FormatViewBinding
詳細については、「 Trace-Command」と「Get-TraceSource 」 を参照してください。
Format.ps1xml ファイルへの署名
ファイルのユーザーを Format.ps1xml
保護するには、デジタル署名を使用してファイルに署名します。 詳細については、「 about_Signing」を参照してください。
Format-Table カスタム ビューのサンプル XML
次の XML サンプルでは、 Format-Table
によってGet-ChildItem
作成された System.IO.DirectoryInfo オブジェクトと System.IO.FileInfo オブジェクトのカスタム ビューを作成します。 カスタム ビューの名前は mygciview で、 CreationTime 列がテーブルに追加されます。
カスタム ビューを作成するには、 コマンドレットと コマンドレットをGet-FormatData
使用してファイルを.ps1xml
生成Export-FormatData
します。 次に、ファイルを .ps1xml
編集して、カスタム ビューのコードを作成します。 ファイルは .ps1xml
、PowerShell がアクセスできる任意のディレクトリに格納できます。 たとえば、 のサブディレクトリ $HOME
です。
ファイルが .ps1xml
作成されたら、 コマンドレットを Update-FormatData
使用して、現在の PowerShell セッションにビューを含めます。 または、すべての PowerShell セッションで使用可能なビューが必要な場合は、PowerShell プロファイルに update コマンドを追加します。
この例では、カスタム ビューでテーブル形式を使用する必要があります。それ以外の場合は Format-Table
失敗します。
View パラメーターと共に を使用してFormat-Table
、カスタム ビューの名前 mygciview を指定し、CreationTime 列を使用してテーブルの出力を書式設定します。 コマンドの実行方法の例については、「 Format-Table」を参照してください。
注意
ソース コードから書式設定 XML を取得してカスタム ビューを作成することはできますが、目的の結果を得るにはさらに開発が必要になる場合があります。
次 Get-FormatData
のコマンドでは、 PowerShellVersion パラメーターの代替手段を使用して、すべてのローカル書式設定情報が確実に返されるようにします。 特定の PowerShell バージョンではなく を使用 -PowerShellVersion $PSVersionTable.PSVersion
します。
Get-FormatData -PowerShellVersion 5.1 -TypeName System.IO.DirectoryInfo |
Export-FormatData -Path ./Mygciview.Format.ps1xml
Update-FormatData -AppendPath ./Mygciview.Format.ps1xml
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<ViewDefinitions>
<View>
<Name>mygciview</Name>
<ViewSelectedBy>
<TypeName>System.IO.DirectoryInfo</TypeName>
<TypeName>System.IO.FileInfo</TypeName>
</ViewSelectedBy>
<GroupBy>
<PropertyName>PSParentPath</PropertyName>
</GroupBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Label>Mode</Label>
<Width>7</Width>
<Alignment>Left</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>LastWriteTime</Label>
<Width>26</Width>
<Alignment>Right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>CreationTime</Label>
<Width>26</Width>
<Alignment>Right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>Length</Label>
<Width>14</Width>
<Alignment>Right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>Name</Label>
<Alignment>Left</Alignment>
</TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<Wrap />
<TableColumnItems>
<TableColumnItem>
<PropertyName>ModeWithoutHardLink</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>LastWriteTime</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>CreationTime</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Length</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Name</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
</ViewDefinitions>
</Configuration>