创建表视图

表视图显示一个或多个列中的数据。 表中的每一行都表示一个 .NET 对象,表的每一列都表示对象的属性或脚本值。 可以定义一个表视图,该视图显示对象的所有属性或对象的属性子集。

表视图显示

以下示例演示 Windows PowerShell 如何显示由 Get-Service cmdlet 返回的 System.ServiceProcess.ServiceController 对象。 对于此对象,Windows PowerShell 定义了一个表视图,该视图显示 Status 属性、Name 属性(此属性是 ServiceName 属性的别名属性),以及 DisplayName 属性。 表中的每一行表示 cmdlet 返回的对象。

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Running  Appinfo            Application Information

定义表视图

以下 XML 显示用于显示 System.ServiceProcess.ServiceController 对象的表视图架构。 必须指定要显示在表视图中的每个属性。

<View>
  <Name>service</Name>
  <ViewSelectedBy>
    <TypeName>System.ServiceProcess.ServiceController</TypeName>
  </ViewSelectedBy>
  <TableControl>
    <TableHeaders>
      <TableColumnHeader>
        <Width>8</Width>
      </TableColumnHeader>
      <TableColumnHeader>
        <Width>18</Width>
      </TableColumnHeader>
      <TableColumnHeader>
        <Width>38</Width>
      </TableColumnHeader>
    </TableHeaders>
    <TableRowEntries>
      <TableRowEntry>
        <TableColumnItems>
          <TableColumnItem>
           <PropertyName>Status</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>Name</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>DisplayName</PropertyName>
          </TableColumnItem>
        </TableColumnItems>
      </TableRowEntry>
    </TableRowEntries>
  </TableControl>
</View>

以下 XML 元素用于定义列表视图:

  • View 元素是表视图的父元素。 (这是列表、宽控件视图和自定义控件视图的同一父元素。

  • Name 元素指定视图的名称。 所有视图都需要此元素。

  • ViewSelectedBy 元素定义使用该视图的对象。 此元素是必需的。

  • GroupBy 元素(此示例中未显示)定义何时显示新的对象组。 每当特定属性或脚本的值发生更改时,将启动一个新组。 此元素为可选元素。

  • Controls 元素(此示例中未显示)定义由表视图定义的自定义控件。 通过控件可以进一步指定数据的显示方式。 此元素为可选元素。 视图可以定义自己的自定义控件,也可以使用格式文件中任何视图可以使用的常用控件。 有关自定义控件的详细信息,请参阅 创建自定义控件

  • HideTableHeaders 元素(在此示例中未显示)指定表不会在表顶部显示任何标签。 此元素为可选元素。

  • TableControl 元素,用于定义表的标题和行信息。 与所有其他视图类似,表视图可以显示脚本生成的对象属性或值的值。

定义列标题

  1. TableHeaders 元素及其子元素定义表顶部显示的内容。

  2. TableColumnHeader 元素定义表列顶部显示的内容。 按照希望显示标头的顺序指定这些元素。

    可以使用的元素数没有限制,但表视图中的 TableColumnHeader 元素数必须等于使用的 tableRowEntry 元素 个数。

  3. Label 元素指定显示的文本。 此元素为可选元素。

  4. Width 元素指定列的宽度(以字符为单位)。 此元素为可选元素。

  5. Alignment 元素指定标签的显示方式。 标签可以对齐到左侧、右侧或居中。 此元素为可选元素。

定义表行

表视图可以提供一个或多个定义,这些定义通过使用 TableRowEntries 元素的子元素指定表行中显示的数据。 请注意,可以为表的行指定多个定义,但行的标题保持不变,而不考虑使用哪个行定义。 通常,表只有一个定义。

在以下示例中,该视图提供了一个定义,用于显示 System.Diagnostics.Process 对象的多个属性的值。 表视图可以在其行中显示属性的值或脚本的值(未显示在示例中)。

<TableRowEntries>
      <TableRowEntry>
        <TableColumnItems>
          <TableColumnItem>
           <PropertyName>Status</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>Name</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>DisplayName</PropertyName>
          </TableColumnItem>
        </TableColumnItems>
      </TableRowEntry>
    </TableRowEntries>

以下 XML 元素可用于提供行的定义:

  • TableRowEntries 元素及其子元素定义表行中显示的内容。

  • TableRowEntry 元素提供行的定义。 至少需要一个 TableRowEntry;但是,可以添加的元素数没有最大限制。 在大多数情况下,视图只有一个定义。

  • EntrySelectedBy 元素指定由特定定义显示的对象。 此元素是可选的,仅在定义多个 TableRowEntry 显示不同对象的元素时才需要此元素。

  • Wrap 元素指定超过列宽的文本显示在下一行。 默认情况下,超过列宽的文本将被截断。

  • TableColumnItems 元素定义其值显示在行中的属性或脚本。

  • TableColumnItem 元素定义其值显示在行列中的属性或脚本。 行的每一列都需要 TableColumnItem 元素。 第一个条目显示在第一列中,第二列中的第二个条目,依此显示。

  • PropertyName 元素指定其值显示在行中的属性。 必须指定属性或脚本,但不能同时指定这两个属性。

  • ScriptBlock 元素指定其值显示在行中的脚本。 必须指定脚本或属性,但不能同时指定两者。

  • FormatString 元素指定一种格式模式,用于定义属性或脚本值的显示方式。 此元素为可选元素。

  • Alignment 元素指定属性或脚本的值的显示方式。 该值可以与左侧、右侧或居中对齐。 此元素为可选元素。

定义使用表视图的对象

有两种方法可以定义哪些 .NET 对象使用表视图。 可以使用 ViewSelectedBy 元素来定义可由视图的所有定义显示的对象,也可以使用 EntrySelectedBy 元素定义视图的特定定义显示哪些对象。 在大多数情况下,视图只有一个定义,因此对象通常由 ViewSelectedBy 元素定义。

以下示例演示如何使用 ViewSelectedByTypeName 元素定义表视图显示的对象。 TypeName 元素的数量没有限制,并且其顺序并不重要。

<View>
  <Name>System.ServiceProcess.ServiceController</Name>
  <ViewSelectedBy>
    <TypeName>System.ServiceProcess.ServiceController</TypeName>
  </ViewSelectedBy>
  <TableControl>...</TableControl>
</View>

以下 XML 元素可用于指定表视图使用的对象:

  • ViewSelectedBy 元素定义列表视图显示的对象。

  • TypeName 元素指定视图显示的 .NET 对象。 需要完全限定的 .NET 类型名称。 必须为视图指定至少一个类型或选择集,但不能指定最大数量的元素。

以下示例使用 ViewSelectedBySelectionSetName 元素。 使用选择集,可在其中使用多个视图显示相关对象集,例如为同一对象定义列表视图和表视图时。 有关如何创建选择集的详细信息,请参阅 定义选择集

<View>
  <Name>System.ServiceProcess.ServiceController</Name>
  <ViewSelectedBy>
    <SelectionSetName>.NET Type Set</SelectionSetName>
  </ViewSelectedBy>
  <TableControl>...</TableControl>
</View>

以下 XML 元素可用于指定列表视图使用的对象:

  • ViewSelectedBy 元素定义列表视图显示的对象。

  • SelectionSetName 元素指定一组可由视图显示的对象。 必须至少为视图指定一个选择集或类型,但没有可以指定的最大元素数。

以下示例演示如何使用 EntrySelectedBy 元素定义表视图的特定定义显示的对象。 使用此元素,可以指定对象的 .NET 类型名称、对象的选择集或指定何时使用定义的选择条件。 有关如何创建选择条件的详细信息,请参阅 定义用于显示数据的条件。

注释

创建表视图的多个定义时,不能指定不同的列标题。 只能指定表中的行中显示的内容,例如显示的对象。

<TableRowEntry>
  <EntrySelectedBy>
    <TypeName>.NET Type</TypeName>
  </EntrySelectedBy>
</TableRowEntry>

以下 XML 元素可用于指定列表视图的特定定义使用的对象:

  • EntrySelectedBy 元素定义显示的对象。

  • TypeName 元素指定定义显示的 .NET 对象。 使用此元素时,需要完全限定的 .NET 类型名称。 必须为定义指定至少一个类型、选择集或选择条件,但不能指定最大数量的元素。

  • SelectionSetName 元素(未显示)指定一组可由此定义显示的对象。 必须为定义指定至少一个类型、选择集或选择条件,但不能指定最大数量的元素。

  • SelectionCondition 元素(未显示)指定必须存在的条件才能使用此定义。 必须为定义指定至少一个类型、选择集或选择条件,但不能指定最大数量的元素。 有关定义选择条件的详细信息,请参阅 定义用于显示数据的条件。

使用格式字符串

可以将格式字符串添加到视图中,以进一步定义数据的显示方式。 以下示例演示如何为 StartTime 属性的值定义格式字符串。

<TableColumnItem>
  <PropertyName>StartTime</PropertyName>
  <FormatString>{0:MMM} {0:DD} {0:HH}:{0:MM}</FormatString>
</TableColumnItem>

以下 XML 元素可用于指定格式模式:

  • TableColumnItem 元素定义其值显示在行列中的属性或脚本。 行的每一列都需要 TableColumnItem 元素。 第一个条目显示在第一列中,第二列中的第二个条目,依此显示。

  • PropertyName 元素指定其值显示在行中的属性。 必须指定属性或脚本,但不能同时指定这两个属性。

  • FormatString 元素指定一种格式模式,用于定义属性或脚本值的显示方式。

在以下示例中,将调用 ToString 方法来设置脚本值的格式。 脚本可以调用对象的任何方法。 因此,如果对象具有具有格式参数的方法(如 ToString),则脚本可以调用该方法来设置脚本的输出值的格式。

<ListItem>
  <ScriptBlock>
    [string]::Format("{0,-10} {1,-8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))
  </ScriptBlock>
</ListItem>

以下 XML 元素可用于调用 ToString 方法:

  • TableColumnItem 元素定义其值显示在行列中的属性或脚本。 行的每一列都需要 TableColumnItem 元素。 第一个条目显示在第一列中,第二列中的第二个条目,依此显示。

  • ScriptBlock 元素指定其值显示在行中的脚本。 必须指定脚本或属性,但不能同时指定两者。

另请参阅

编写 PowerShell 格式设置文件