about_Format.ps1xml

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

トピック

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 によってオブジェクトが表示される場合は、構造化された書式設定ファイルのデータを使用して、オブジェクトの既定の表示方法が決定されます。書式設定ファイルのデータによって、オブジェクトを表と一覧のいずれで表示するか、また既定でどのプロパティを表示するかが決まります。

書式設定は表示にのみ影響します。どのオブジェクト プロパティがパイプラインで渡されるか、またはどのような方法で渡されるかには影響しません。Format.ps1xml はハッシュ テーブルの出力形式のカスタマイズには使用できません。

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 ファイルのビューを使用して、ファイル オブジェクトおよびフォルダー オブジェクトを一覧表示する方法を決定します。

書式設定ファイルが 1 つのオブジェクトについて複数のビューを含む場合、Windows PowerShell は最初に見つかったビューを適用します。

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) の書式設定を変更する方法を示します。この例のコマンドは、カルチャ オブジェクトの表ビューの既定の表示方法に カレンダー プロパティを追加します。

最初の手順は、カルチャ オブジェクトの現在のビューを含んでいる 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>

<CustomControl>

これらのタグには、各項目の表示方法<DefaultDisplayProperty>を指定するタグが含まれます。

<ViewSelectedBy> タグには、ビューを適用する種類のオブジェクトごとに <TypeName> タグを含めることができます。または、<SelectionSet> タグを使用して、別の場所で定義されている選択セットを参照する <SelectionSetName> タグを含めることもできます。

<GroupBy> タグには、項目に応じてグループ化するために使用するオブジェクト プロパティを指定する <PropertyName> タグが含まれています。また、各グループのラベルとして使用される文字列を指定する <Label> タグ、または別の場所で <Control> タグを使用して定義されているカスタムコントロールを参照する <CustomControlName> タグも含まれています。<Control> タグには、<Name> タグと<CustomControl> タグが含まれます。

<TableControl> タグには、通常、表のヘッダーと行の書式を定義する <TableHeaders> および <TableRowEntries> タグが含まれています。<TableHeaders> タグには、通常、<Label>、<Width>、および <Alignment> タグを含む <TableColumnHeader> タグが含まれています。<TableRowEntries> タグには、表の各行の <TableRowEntry> タグが含まれています。<TableRowEntry> タグには、行の各列の <TableColumnItems> タグを含む <TableColumnItem> タグが含まれています。通常、<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> タグを含めることができます。

<CustomControl> タグにより、書式を定義するスクリプト ブロックを使うことができます。<CustomControl> は通常、複数の <CustomEntry> タグを含む <CustomEntries> タグを含みます。<CustomEntry> タグは <CustomItem> タグを含み、このタグは、<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 ファイルの読み込みまたは適用時に発生するエラーを検出するには、次の書式コンポーネントのいずれかを Name パラメーターの値に指定して、Trace-Command コマンドレットを使用します。

  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