次の方法で共有


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>

新しいタグセット<TableColumnHeader>を追加して、Calendar プロパティの新しい列をCreateします。 Calendar プロパティの値は長い場合があるため、 として 45 文字の値を<Width>指定します。

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

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

<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 、新しいフォーマット ファイルを現在の PowerShell セッションに追加します。

次の使用例は、 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>および <Alignment> タグを含むタグが含<Label><Width>まれます。 タグには <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><ExpressionBinding>、 タグなど) を含めることができるタグが含<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 によってGet-ChildItem作成された System.IO.DirectoryInfo オブジェクトと System.IO.FileInfo オブジェクトのカスタム ビューを作成します。 カスタム ビューの名前は mygciview で、 CreationTime 列がテーブルに追加されます。

カスタム ビューを作成するには、 コマンドレットと コマンドレットをGet-FormatData使用してファイルを.ps1xml生成Export-FormatDataします。 次に、ファイルを .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>

こちらもご覧ください