トピック about_Format.ps1xml 簡易説明 Windows PowerShell の Format.ps1xml ファイルは、Windows PowerShell コンソールでのオブジェクトの既定の 表示を定義します。独自の Format.ps1xml ファイルを作成すると、Windows PowerShell でのオブジェクトの表示 を変更したり、新規作成するオブジェクトの型の既定の表示を定義することができます。 詳細説明 Windows PowerShell の Format.ps1xml ファイルは、Windows PowerShell でのオブジェクトの既定の表示を定義 します。独自の Format.ps1xml ファイルを作成すると、Windows PowerShell でのオブジェクトの表示を変更したり、 新規作成するオブジェクトの型の既定の表示を定義することができます。 Windows PowerShell によってオブジェクトが表示される場合は、構造化された書式設定ファイルのデータを使用 して、オブジェクトの既定の表示が決定されます。書式設定ファイルのデータによって、オブジェクトを表と一覧 のいずれで表示するか、また既定でどのプロパティを表示するかが決まります。 書式設定は表示にのみ影響します。どのオブジェクト プロパティがパイプラインで渡されるか、またはどのよう な方法で渡されるかには影響しません。 Windows PowerShell には、7 つの書式設定ファイルが用意されています。これらのファイルは、インストー ル ディレクトリ ($pshome) にあります。各ファイルは、Microsoft .NET Framework オブジェクトのグル ープの表示を定義します。 Certificate.Format.ps1xml X.509 証明書や証明書ストアなど、証明書ストアのオブジェクト。 DotNetTypes.Format.ps1xml CultureInfo オブジェクト、FileVersionInfo オブジェクト、EventLogEntry オブジェクト など、その他の .NET Framework 型。 FileSystem.Format.ps1xml ファイルやディレクトリなど、ファイル システム オブジェクト。 Help.Format.ps1xml 詳細ビューや完全ビューなどのヘルプのビュー、パラメーター、および例。 PowerShellCore.format.ps1xml Get-Member や Get-History などの Windows PowerShell コア コマンドレットによって生成されるオブジェクト。 PowerShellTrace.format.ps1xml Trace-Command コマンドレットによって生成されるようなトレース オブジェクト。 Registry.format.ps1xml キーやエントリなどのレジストリ オブジェクト。 書式設定ファイルでは、各オブジェクトの 4 つのビュー (表、一覧、ワイド、複雑) を定義することができま す。たとえば、Get-ChildItem コマンドの出力を Format-List コマンドにパイプを介して渡すと、Format- List は、FileSystem.format.ps1xml ファイルのビューを使用して、ファイル オブジェクトおよびフォルダー オブ ジェクトを一覧として表示する方法を決定します。 Format.ps1xml ファイルで、ビューは、ビューの名前、適用可能なオブジェクトの型、列ヘッダー、およびビ ューの本体に表示されるプロパティを記述する XML タグのセットによって定義されます。Format.ps1xml フ ァイルの書式は、データがユーザーに表示される直前に適用されます。 Format.ps1xml ファイルの新規作成 Windows PowerShell と共にインストールされた .ps1xml ファイルは、改ざんを防止するためにデジタル署名さ れています。書式設定にはスクリプト ブロックを含めることができるためです。したがって、既存のオブジェ クト ビューの表示書式を変更したり、新規オブジェクトのビューを追加するには、独自の Format.ps1xml ファ イルを作成し、これらのファイルを Windows PowerShell セッションに追加します。 新しいファイルを作成するには、既存の Format.ps1xml ファイルをコピーします。新しいファイルには任意 の名前を付けることができますが、ファイル名拡張子 .ps1xml を付ける必要があります。新しいファイルは、 Windows PowerShell がアクセスできるどのディレクトリにも配置できますが、Windows PowerShell イ ンストール ディレクトリ ($pshome) またはインストール ディレクトリのサブディレクトリに配置すると便 利です。 現在のビューの書式設定を変更するには、書式設定ファイルでビューを見つけ、タグを使用してビューを変更し ます。新規オブジェクト型のビューを作成するには、ビューを新規作成するか、または既存のビューをモデルと して使用します (タグについては、このトピックの次のセクションで説明します)。書式設定ファイル内で不要な ビューをすべて削除しておくと、変更内容がわかりやすくなります。 変更を保存したとき、Update-FormatData コマンドレットを使用して Windows PowerShell セッションに 新しいファイルを追加します。組み込みファイルに定義されているビューよりも優先させるビューがある場合 は、Update-FormatData の PrependData パラメーターを使用します。Update-FormatData は、現在 のセッションにのみ影響します。将来のすべてのセッションを変更するには、Windows PowerShell プロファイ ルに Update-FormatData コマンドを追加します。 例: カレンダー データのカルチャ オブジェクトへの追加 この例では、Get-Culture コマンドレットによって生成されるカルチャ オブジェクト (System.Globalization.CultureInfo) の書式設定を変更する方法を示します。 この例のコマンドは、カルチャ オブジェクトの既定の表ビューの表示に Calendar プロパティを追加します。 最初の手順は、カルチャ オブジェクトの現在のビューを含んでいる Format.ps1xml ファイルを見つけること です。次の Select-String コマンドは、このファイルを見つけます。 select-string -path $pshome\*format.ps1xml ` -pattern System.Globalization.CultureInfo このコマンドによって、DotNetTypes.Format.ps1xml ファイルに定義があることがわかります。 次のコマンドは、そのファイルの内容を新しいファイル MyDotNetTypes.Format.ps1xml にコピーします。 copy-item DotNetTypes.Format.ps1xml MyDotNetTypes.Format.ps1xml 次に、XML エディターやメモ帳などのテキスト エディターで MyDotNetTypes.Format.ps1xml ファイルを開きま す。System.Globalization.CultureInfo オブジェクト セクションを見つけます。次の XML は、CultureInfo オブジェクトのビューを定義します。このオブジェクトには、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> 開始タグ <?XML>、<Configuration>、および <ViewDefinitions> と終了タグ <ViewDefintions> および <Configuration> を除き、ファイルの残りの部分を削除します。また、ファイルを変更 する場合は、デジタル署名も削除する必要があります。 <?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> 次に、新しい <TableColumnHeader> タグ セットを追加して、Calendar プロパティに新規の列を作成 します。Calendar プロパティの値は、長くできるので、45 文字という値を次のように使用します。 <TableControl> <TableHeaders> <TableColumnHeader> <Width>16</Width> </TableColumnHeader> <TableColumnHeader> <Width>16</Width> </TableColumnHeader> <TableColumnHeader> <Width>45</Width> </TableColumnHeader> <TableColumnHeader/> </TableHeaders> ここで、表の行に新しい列項目を次のように追加します。 <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 コマンドを使用して、新しい書式設定ファ イルを現在のセッションに追加します。このコマンドは、PrependData パラメーターを使用して、新しいフ ァイルの優先順位を元のファイルよりも高くします (Update-FormatData の詳細については、「get-help update-formatdata」と入力してください)。 update-formatdata -prependpath $pshome\MyDotNetTypes.format.ps1xml 変更をテストするには、「get-culture」と入力して、Calendar プロパティが含まれている出力を確認し ます。 C:\PS> get-culture LCID Name Calendar DisplayName ---- ---- -------- ----------- 1033 en-US System.Globalization.GregorianCalendar English (United States) Format.ps1xml ファイルの XML 各 Format.ps1xml ファイルの ViewDefinitions セクションには、各ビューを定義する <View> タグ が含まれています。通常の <View> タグには、以下のタグが含まれています。 <Name> <Name> タグは、ビューの名前を表します。 <ViewSelectedBy> <ViewSelectedBy> タグには、ビューを適用するオブジェクトの型を指定します。 <GroupBy> <GroupBy> タグには、ビューの項目をグループ化する方法を指定します。 <TableControl> <ListControl> <WideControl> <ComplexControl> これらのタグには、各項目の表示方法を指定するタグが含まれます。 <ViewSelectedBy> タグには、ビューを適用するオブジェクトの型ごとに <TypeName> タグを含めること ができます。または、<SelectionSet> タグを使用して別の場所で定義されている選択セットを参照する <SelectionSetName> タグを含めることもできます。 <GroupBy> タグには、項目をグループ化するために使用するオブジェクト プロパティを指定する <PropertyName> タグが含まれています。また、各グループのラベルとして使用される文字列を指定する <Label> タグ、または別の場所で <Control> タグを使用して定義されている複雑コントロールを参照する <ComplexControlName> タグも含まれています。<Control> タグには、<Name> タグと <ComplexControl> タグが含まれます。 通常、<TableControl> タグには、表のヘッダーと行の書式を定義する <TableHeaders> および <TableRowEntries> タグが含まれています。この <TableHeaders> タグには、通常、<Label>、<Width>、 および <Alignment> タグを含む <TableColumnHeader> タグが含まれています。<TableRowEntries> タグには、 表の各行の <TableRowEntry> タグが含まれています。この <TableRowEntry> タグには、行の各列の <TableColumnItem> タグを含む <TableColumnItems> タグが含まれています。 通常、<TableColumnItem> タグには、定義済みの場所に表示されるオブジェクト プロパティを表す <PropertyName> タグ、またはその場所に表示される結果を計算するスクリプト コードを含む <ScriptBlock> タグが含まれています。 注: スクリプト ブロックは、計算された結果が役立つ別の場所でも使用できます。 <TableColumnItem> タグには、プロパティまたは計算された結果の表示方法を指定する <FormatString> タグを含めることもできます。 通常、<ListControl> タグには、<ListEntries> タグが含まれます。<ListEntries> タグには、 <ListItems> タグが含まれます。<ListItems> タグには <ListItem> タグが含まれ、このタグには <PropertyName> タグが含まれます。<PropertyName> タグには、リストの指定場所に表示するオブジェク ト プロパティを指定します。選択セットを使用してビューの選択が定義されている場合、<ListControl> タグ には、1 つ以上の <TypeName> タグを含む <EntrySelectedBy> タグも含めることができます。これらの <TypeName> タグには、<ListControl> タグで表示するオブジェクトの型を指定します。 通常、<WideControl> タグには、<WideEntries> タグが含まれます。<WideEntries> タグには、1 つ以上 の <WideEntry> タグが含まれます。通常、<WideEntry> タグには、ビューの指定場所に表示するプロパティを 指定する <PropertyName> タグが含まれます。<PropertyName> タグには、プロパティの表示方法を指定する <FormatString> タグを含めることができます。 <ComplexControl> タグには、その他の種類のビューよりも複雑なタグの組み合わせが含まれます。通常、 <ComplexControl> タグには、<ComplexEntries> タグが含まれます。<ComplexEntries> タグには、複数の <ComplexEntry> タグが含まれます。通常、<ComplexEntry> タグには、<ComplexItem> タグが含まれます。この <ComplexItem> タグには、ビューの指定場所の内容と書式を指定するさまざまなタグ (<Text>、 <Indentation>、<ExpressionBinding>、<NewLine> タグなど) を含めることができます。 Update-FormatData Windows PowerShell セッションに Format.ps1xml ファイルを読み込むには、Update-FormatData コマンド レットを使用します。組み込み Format.ps1xml ファイルのビューよりも優先させるビューが ファイルにある場合は、Update-FormatData の PrependData パラメーターを使用します。Update- FormatData は、現在のセッションにのみ影響します。将来のすべてのセッションを変更するには、 Windows PowerShell プロファイルに Update-FormatData コマンドを追加します。 Types.ps1xml の既定の表示 一部の基本オブジェクトの型の既定の表示は、$pshome ディレクトリの Types.ps1xml ファイルに定義さ れています。ノードは PsStandardMembers という名前で、サブノードでは次のタグの 1 つを使用します。 <DefaultDisplayProperty> <DefaultDisplayPropertySet> <DefaultKeyPropertySet> 詳細については、次のコマンドを入力してください。 get-help about_types.ps1xml Format.ps1xml ファイルのトレースの使用 Format.ps1xml ファイルの読み込みまたは適用時にエラーを検出するには、Trace-Command コマンドレットと 共に、次の書式コンポーネントのいずれかを Name パラメーターの値として使用します。 FormatFileLoading UpdateFormatData FormatViewBinding 詳細については、次のコマンドを入力してください。 get-help trace-command get-help get-tracesource Format.ps1xml ファイルの署名 Format.ps1xml ファイルのユーザーを保護するには、デジタル署名を使用してこのファイルに署名します。 詳細については、次のように入力してヘルプを参照してください。 get-help about_signing 関連項目 Update-FormatData Trace-Command Get-TraceSource