共用方式為


格式化檔案概觀

命令所傳回之對象的顯示格式(Cmdlet、函式和腳本)是使用格式化檔案來定義(format.ps1xml)。 PowerShell 會提供其中數個檔案來定義 PowerShell 所提供命令所傳回之對象的顯示格式,例如 Get-Process Cmdlet 所傳回的 System.Diagnostics.Process 物件。 不過,您也可以建立自己的自定義格式檔案來覆寫預設的顯示格式,也可以撰寫自定義格式檔案來定義您自己的命令所傳回對象的顯示。

這很重要

格式化檔案不會判斷傳回至管線之物件的元素。 當物件傳回管線時,即使某些成員未顯示,該物件的所有成員仍可供使用。

PowerShell 會使用這些格式化檔案中的數據來判斷顯示的內容,以及顯示的數據格式化方式。 顯示的數據可以包含物件的屬性或腳本的值。 如果您想要顯示一些無法直接從物件屬性取得的值,例如新增 物件的兩個屬性值,然後將總和顯示為數據片段,則會使用腳本。 所顯示資料的格式設定是藉由定義您要顯示之物件的檢視來完成。 您可以為每個物件定義單一檢視、定義多個物件的單一檢視,也可以為相同的物件定義多個檢視。 您可以定義的檢視數目沒有限制。

格式化檔案的常見功能

每個格式化檔案都可以定義下列元件,這些元件可以在檔案定義的所有檢視之間共用:

  • 默認組態設定,例如,如果數據超過數據行的寬度,數據表數據列中顯示的數據是否會在下一行顯示。 如需這些設定的詳細資訊,請參閱 TableRowEntry 的 Wrap 元素

  • 可由格式化檔案的任何檢視所顯示的物件集合。 如需這些集合的詳細資訊(稱為 選取集),請參閱 定義物件的集合

  • 格式化檔案之所有檢視可以使用的通用控件。 控制數據的顯示方式。 如需控制件的詳細資訊,請參閱 定義自定義控制項

格式化檢視

格式化檢視可以以表格格式、清單格式、寬格式和自定義格式顯示物件。 大部分情況下,每個格式定義都會由一組描述檢視的 XML 標籤來描述。 每個檢視都包含檢視的名稱、使用檢視的物件,以及檢視的專案,例如數據表檢視的數據行和數據列資訊。

數據表檢視

列出一或多個數據行中物件或腳本區塊值的屬性。 每個數據行都代表物件或腳本值的單一屬性。 您可以定義數據表檢視,以顯示物件的所有屬性、對象的屬性子集,或屬性和腳本值的組合。 數據表的每個數據列都代表傳回的物件。 當您使用管線將對象傳送至 Format-Table Cmdlet 時,建立數據表檢視非常類似。 如需此檢視的詳細資訊,請參閱 資料表檢視

清單檢視

列出單一數據行中物件或腳本值的屬性。 清單的每個數據列都會顯示選擇性標籤或屬性名稱,後面接著屬性或腳本的值。 建立清單檢視非常類似於將對象傳送至 Format-List Cmdlet。 如需此檢視的詳細資訊,請參閱 清單檢視

寬視圖

列出物件或一個或多個數據行中的腳本值單一屬性。 此檢視沒有標籤或標頭。 建立寬視圖與將 物件管線與 Format-Wide Cmdlet 非常類似。 如需此檢視的詳細資訊,請參閱 Wide View

自訂檢視

顯示物件屬性或腳本值的可自定義檢視,這些值不符合數據表檢視、清單檢視或寬檢視的固定結構。 您可以定義獨立自定義檢視,也可以定義另一個檢視所使用的自定義檢視,例如數據表檢視或列表檢視。 建立自定義檢視與將 物件管線與 Format-Custom Cmdlet 非常類似。 如需此檢視的詳細資訊,請參閱 自定義檢視

檢視的元件

下列 XML 範例顯示檢視的基本 XML 元件。 個別 XML 元素會根據您想要建立的檢視而有所不同,但檢視的基本元件全都相同。

首先,每個檢視都有一個 Name 專案,指定用來參考檢視的用戶易記名稱。 定義檢視所顯示之 .NET 物件的 ViewSelectedBy 專案,以及定義檢視的 控件 專案。

<ViewDefinitions>
  <View>
    <Name>NameOfView</Name>
    <ViewSelectedBy>...</ViewSelectedBy>
    <TableControl>...</TableControl>
  </View>
  <View>
    <Name>NameOfView</Name>
    <ViewSelectedBy>...</ViewSelectedBy>
    <ListControl>...</ListControl>
  <View>
  <View>
    <Name>NameOfView</Name>
    <ViewSelectedBy>...</ViewSelectedBy>
    <WideControl>...</WideControl>
  <View>
  <View>
    <Name>NameOfView</Name>
    <ViewSelectedBy>...</ViewSelectedBy>
    <CustomControl>...</CustomControl>
  </View>
</ViewDefinitions>

在控件元素內,您可以定義一或多個 專案 專案。 如果您使用多個定義,則必須指定哪個 .NET 物件使用每個定義。 每個控件通常只需要一個專案,只有一個定義。

<ListControl>
  <ListEntries>
    <ListEntry>
      <EntrySelectedBy>...</EntrySelectedBy>
      <ListItems>...</ListItems>
    </ListEntry>
    <ListEntry>
        <EntrySelectedBy>...</EntrySelectedBy>
      <ListItems>...</ListItems>
    </ListEntry>
    <ListEntry>
        <EntrySelectedBy>...</EntrySelectedBy>
      <ListItems>...</ListItems>
    </ListEntry>
  </ListEntries>
</ListControl>

在檢視的每個項目專案中,您可以指定 專案 元素,這些元素會定義該檢視所顯示的 .NET 屬性或腳本。


<ListItems>
  <ListItem>...</ListItem>
  <ListItem>...</ListItem>
  <ListItem>...</ListItem>
</ListItems>

如上述範例所示,格式化檔案可以包含多個檢視、檢視可以包含多個定義,而且每個定義都可以包含多個專案。

數據表檢視的範例

下列範例顯示用來定義包含兩個數據行之數據表檢視的 XML 標記。 ViewDefinitions 元素是格式化檔案中定義之所有檢視的容器元素。 View 元素會定義特定的數據表、清單、寬或自定義檢視。 在每個 View 元素內,Name 元素會指定檢視的名稱、ViewSelectedBy 元素會定義使用檢視的物件,以及不同的控件元素(例如下列範例所示的 TableControl 元素)會定義檢視的類型。

<ViewDefinitions>
  <View>
    <Name>Name of View</Name>
    <ViewSelectedBy>
      <TypeName>Object to display using this view</TypeName>
      <TypeName>Object to display using this view</TypeName>
    </ViewSelectedBy>
    <TableControl>
      <TableHeaders>
        <TableColumnHeader>
          <Width></Width>
        </TableColumnHeader>
        <TableColumnHeader>
          <Width></Width>
        </TableColumnHeader>
      </TableHeaders>
      <TableRowEntries>
        <TableRowEntry>
          <TableColumnItems>
            <TableColumnItem>
              <PropertyName>Header for column 1</PropertyName>
            </TableColumnItem>
            <TableColumnItem>
              <PropertyName>Header for column 2</PropertyName>
            </TableColumnItem>
          </TableColumnItems>
        </TableRowEntry>
      </TableRowEntries>
    </TableControl>
  </View>
</ViewDefinitions>

另請參閱

建立清單檢視

建立數據表檢視

建立寬視圖

建立自定義控件

撰寫 PowerShell 格式設定和類型檔案