ja-JP/about_Format.ps1xml.help.txt

TOPIC
    about_Format.ps1xml

簡単な説明
    PowerShell 6 以降、オブジェクトの既定の表示は PowerShell の
    ソースコード内で定義されています。独自の Format.ps1xml ファイルを
    作成して、オブジェクトの表示を変更したり、PowerShell で作成した
    新しいオブジェクト型に既定の表示を定義したりできます。

詳細な説明
    PowerShell 6 以降では、既定のビューは PowerShell のソースコードで
    定義されています。PowerShell 5.1 以前に存在した Format.ps1xml
    ファイルは、PowerShell 6 以降のバージョンには存在しません。

    PowerShell のソースコードがコンソールでの既定のオブジェクト表示を
    決定します。独自の Format.ps1xml ファイルを使用すると、オブジェクトの
    表示を変更したり、PowerShell で作成した新しいオブジェクト型に
    既定の表示を定義したりできます。

    PowerShell がオブジェクトを表示する際は、構造化された書式設定
    ファイル内のデータを使用して、そのオブジェクトの既定の表示を
    決定します。書式設定ファイル内のデータは、オブジェクトをテーブル
    形式で表示するかリスト形式で表示するかを決定し、また既定で表示する
    プロパティを決定します。

    書式設定は表示にのみ影響します。パイプラインに渡されるオブジェクトの
    プロパティや、その渡され方には影響しません。Format.ps1xml ファイルを
    使用して、ハッシュテーブルの出力書式をカスタマイズすることは
    できません。

    .ps1xml 書式設定ファイルは、次の 4 種類のビューをサポートします。

    - テーブル (Table)
    - リスト (List)
    - ワイド (Wide)
    - カスタム (Custom)

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

    カスタムの Format.ps1xml ファイルでは、ビューは XML タグの集合で
    定義されます。これらのタグは、ビューの名前、ビューを適用できる
    オブジェクトの型、列見出し、ビューの本体に表示されるプロパティを
    記述します。Format.ps1xml ファイル内の書式設定は、データがユーザーに
    表示される直前に適用されます。

  新しい Format.ps1xml ファイルの作成

    既存のオブジェクトビューの表示書式を変更したり、新しいオブジェクト
    のビューを追加したりするには、独自の Format.ps1xml ファイルを作成し、
    PowerShell セッションに追加します。

    カスタムビューを定義する Format.ps1xml ファイルを作成するには、
    Get-FormatData コマンドレットと Export-FormatData コマンドレットを
    使用します。テキストエディターを使用してファイルを編集します。
    ファイルは、$HOME のサブディレクトリなど、PowerShell がアクセス
    できる任意のディレクトリに保存できます。

    現在のビューの書式を変更するには、書式設定ファイル内でそのビューを
    探し、タグを使用してビューを変更します。新しいオブジェクト型の
    ビューを作成するには、新しいビューを作成するか、既存のビューを
    ひな形として使用します。

    変更を保存した後、Update-FormatData を使用して、新しいファイルを
    PowerShell セッションに追加します。組み込みファイルで定義された
    ビューよりも自分のビューを優先させたい場合は、PrependPath
    パラメーターを使用します。Update-FormatData は現在のセッションにのみ
    影響します。今後のすべてのセッションに変更を適用するには、
    Update-FormatData コマンドを PowerShell プロファイルに追加します。

  例: カルチャオブジェクトにカレンダーデータを追加する

    この例では、Get-Culture が返す System.Globalization.CultureInfo
    オブジェクトの書式を変更し、既定のテーブルビューに Calendar
    プロパティを追加する方法を示します。

    最初に次のコマンドで設定します。

        New-Item -Path $HOME\Format -ItemType Directory -Force

        Get-FormatData -TypeName System.Globalization.CultureInfo |
          Export-FormatData -LiteralPath $HOME\Format\CultureInfo.Format.ps1xml

    エクスポートされた 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>

    幅 45 文字の Calendar 用の新しい列を追加します。

        <TableHeaders>
          <TableColumnHeader>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>45</Width>
          </TableColumnHeader>
          <TableColumnHeader/>
        </TableHeaders>

    テーブルの行に Calendar 列の項目を追加します。

        <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 を使用して適用します。

        Update-FormatData -PrependPath $HOME\Format\CultureInfo.Format.ps1xml

    変更をテストします。

        Get-Culture

        LCID Name Calendar DisplayName
        ---- ---- -------- -----------
        1033 en-US System.Globalization.GregorianCalendar English (United States)

  Format.ps1xml ファイル内の XML

    完全なスキーマ定義は、GitHub の PowerShell ソースコードリポジトリ内の
    Format.xsd に記載されています。

    各 Format.ps1xml ファイルの ViewDefinitions セクションには、各ビューを
    定義する <View> タグが含まれます。一般的な <View> タグには次のタグが
    含まれます。

    - <Name> はビューの名前を識別します。
    - <ViewSelectedBy> はビューを適用するオブジェクト型を指定します。
    - <GroupBy> はビュー内の項目をグループにまとめる方法を指定します。
    - <TableControl>、<ListControl>、<WideControl>、<CustomControl> には、
      各項目の表示方法を指定するタグが含まれます。

  ViewSelectedBy タグ

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

  GroupBy タグ

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

  TableControl タグ

    <TableControl> タグには通常、テーブルの見出しと行の書式を定義する
    <TableHeaders> タグと <TableRowEntries> タグが含まれます。
    <TableHeaders> タグには通常、<Label>、<Width>、<Alignment> タグを
    含む <TableColumnHeader> タグが含まれます。<TableRowEntries> タグには、
    テーブルの各行に対応する <TableRowEntry> タグが含まれます。
    <TableRowEntry> タグには、行内の各列に対応する <TableColumnItem> タグを
    含む <TableColumnItems> タグが含まれます。通常、<TableColumnItem> タグ
    には、定義された場所に表示するオブジェクトのプロパティを識別する
    <PropertyName> タグ、または表示する結果を計算するスクリプトコードを
    含む <ScriptBlock> タグのいずれかが含まれます。

    注: 計算結果が有用となる場所であれば、スクリプトブロックを他の場所で
    使用することもできます。

    <TableColumnItem> タグには、プロパティまたは計算結果の表示方法を指定する
    <FormatString> タグを含めることもできます。

  ListControl タグ

    <ListControl> タグには通常 <ListEntries> タグが含まれます。
    <ListEntries> タグには <ListEntry> タグが含まれます。<ListEntry> タグ
    には <ListItems> タグが含まれます。<ListItems> タグには、<PropertyName>
    タグを含む <ListItem> タグが含まれます。<PropertyName> タグは、リスト内の
    指定された場所に表示するオブジェクトのプロパティを指定します。ビューの
    選択が選択セットを使用して定義されている場合、<ListControl> タグと
    <ListEntry> タグには、1 つ以上の <TypeName> タグを含む <EntrySelectedBy>
    タグを含めることもできます。これらの <TypeName> タグは、<ListControl>
    タグが表示するオブジェクト型を指定します。

  WideControl タグ

    <WideControl> タグには通常 <WideEntries> タグが含まれます。
    <WideEntries> タグには 1 つ以上の <WideEntry> タグが含まれます。
    <WideEntry> タグには 1 つの <WideItem> タグが含まれます。

    <WideItem> タグには、<PropertyName> タグまたは <ScriptBlock> タグの
    いずれかを含める必要があります。<PropertyName> タグは、ビュー内の指定
    された場所に表示するプロパティを指定します。<ScriptBlock> タグは、
    ビュー内の指定された場所で評価して表示するスクリプトを指定します。

    <WideItem> タグには、プロパティの表示方法を指定する <FormatString>
    タグを含めることができます。

  CustomControl タグ

    <CustomControl> タグを使用すると、スクリプトブロックを使用して書式を
    定義できます。<CustomControl> タグには通常、複数の <CustomEntry> タグを
    含む <CustomEntries> タグが含まれます。各 <CustomEntry> タグには
    <CustomItem> タグが含まれ、これにはビュー内の指定された場所の内容と
    書式を指定するさまざまなタグ(<Text>、<Indentation>、
    <ExpressionBinding>、<NewLine> など)を含めることができます。

  Format.ps1xml ファイルの使用をトレースする

    Format.ps1xml ファイルの読み込みや適用におけるエラーを検出するには、
    Trace-Command コマンドレットを使用し、Name パラメーターの値として次の
    いずれかの書式コンポーネントを指定します。

    - FormatFileLoading
    - FormatViewBinding

    詳細については、Trace-Command および Get-TraceSource を参照してください。

  Format.ps1xml ファイルへの署名

    Format.ps1xml ファイルの利用者を保護するには、デジタル署名を使用して
    ファイルに署名します。詳細については、about_Signing を参照してください。

  Format-Table カスタムビューのサンプル XML

    次の XML は、Get-ChildItem が返す System.IO.DirectoryInfo オブジェクト
    および System.IO.FileInfo オブジェクト用の Format-Table カスタムビューを
    作成します。このビューは MyGciView という名前で、CreationTime 列を
    含みます。

    設定コマンド:

        Get-FormatData -PowerShellVersion 5.1 -TypeName System.IO.DirectoryInfo |
           Export-FormatData -LiteralPath $HOME\Format\MyGciView.Format.ps1xml

        Update-FormatData -AppendPath $HOME\Format\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>

    注: ソースコードから書式 XML を取得してカスタムビューを作成できますが、
    目的の結果を得るには追加の開発が必要になる場合があります。

関連項目
    Trace-Command
    Export-FormatData
    Get-FormatData
    Update-FormatData
    Get-TraceSource
    about_Types.ps1xml
    about_Signing

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP