格式化檔案概觀
命令所傳回之對象的顯示格式(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>