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 つの異なるビューを定義できます。

  • テーブル
  • 一覧取得
  • ワイド
  • 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>

新しいタグのセットを追加して、 Calendar プロパティの <TableColumnHeader> 新しい列を作成します。 Calendar プロパティの値は長くすることができます。そのため、値として 45 文字を指定します<Width>

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

次のタグを使用して、テーブル行に Calendar新しい列項目を<TableColumnItem><PropertyName追加します。

<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>

ファイルを保存して閉じます。 現在の PowerShell セッションに新しいフォーマット ファイルを追加するために使用 Update-FormatData します。

この例では、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><Width>および<Alignment>タグを含むタグが含<Label>まれます。 タグには <TableRowEntries> 、テーブル内の <TableRowEntry> 各行のタグが含まれています。 タグ <TableRowEntry> には、行の <TableColumnItems> 各列のタグを <TableColumnItem> 含むタグが含まれています。 通常、タグには<PropertyName><TableColumnItem>定義された場所に表示されるオブジェクト プロパティを識別するタグか、場所<ScriptBlock>に表示される結果を計算するスクリプト コードを含むタグが含まれます。

Note

スクリプト ブロックは、計算結果が役立つ可能性がある場所の他の場所でも使用できます。

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

ListControl タグ

通常、 <ListControl> タグにはタグが <ListEntries> 含まれます。 タグには <ListEntries> タグが <ListEntry> 含まれています。 タグには <ListEntry> タグが <ListItems> 含まれています。 タグには <ListItems> 、タグを <ListItem> 含むタグが含まれています <PropertyName> 。 タグは <PropertyName> 、リスト内の指定した場所に表示されるオブジェクト プロパティを指定します。 ビュー選択が選択セットを使用して定義されている場合、<ListControl>タグと<ListEntry>タグには、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>、、、<ExpressionBinding><NewLine>タグなど) を含めることができるタグが含<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作成した System.IO.DirectoryInfo オブジェクトと System.IO.FileInfo オブジェクトのカスタム ビューGet-ChildItem作成します。 カスタム ビューの名前は mygciview で、CreationTime 列がテーブルに追加されます。

カスタム ビューを作成するには、and Export-FormatData コマンドレットをGet-FormatData使用してファイルを.ps1xml生成します。 次に、ファイルを .ps1xml 編集して、カスタム ビューのコードを作成します。 ファイルは .ps1xml 、PowerShell がアクセスできる任意のディレクトリに格納できます。 たとえば、次の $HOMEサブディレクトリです。

ファイルが .ps1xml 作成されたら、コマンドレットを Update-FormatData 使用して、現在の PowerShell セッションにビューを含めます。 または、すべての PowerShell セッションで使用可能なビューが必要な場合は、PowerShell プロファイルに更新コマンドを追加します。

この例では、カスタム ビューでテーブル形式を使用する必要があります。それ以外の場合は Format-Table 失敗します。

View パラメーターと共に使用してFormat-Table、カスタム ビューの名前、mygciview を指定し、CreationTime 列を使用してテーブルの出力を書式設定します。 コマンドの実行方法の例については、「Format-Table」を参照してください

Note

ソース コードから書式設定 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>

関連項目