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>

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

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

テーブル行に 予定表 の新しい列項目を追加します。次のタグを<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>タグには、タグ 、および<Width>``<Alignment>タグを含むタグが含<Label>まれます<TableColumnHeader>。 タグ <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>など<Text>) が<ExpressionBinding>含まれています。

Format.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 プロファイルに 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>

関連項目