创建宽视图

宽视图显示显示的每个对象的单个值。 显示的值可以是 .NET 对象属性的值或脚本的值。 默认情况下,此视图没有标签或标题。

宽视图显示

以下示例演示 Windows PowerShell 如何显示 System.Diagnostics.Process 对象,该对象在 Get-Process cmdlet 通过管道传递给 Format-Wide cmdlet 时返回的对象。 (默认情况下,Get-Process cmdlet 返回表视图。在此示例中,这两列用于显示每个返回对象的进程名称。 不显示对象属性的名称,仅显示属性的值。

Get-Process | Format-Wide
AEADISRV                     agrsmsvc
Ati2evxx                     Ati2evxx
audiodg                      CCC
CcmExec                      communicator
Crypserv                     csrss
csrss                        DevDtct2
DM1Service                   dpupdchk
dwm                          DxStudio
EXCEL                        explorer
GoogleToolbarNotifier        GrooveMonitor
hpqwmiex                     hpservice
Idle                         InoRpc
InoRT                        InoTask
ipoint                       lsass
lsm                          MOM
MSASCui                      notepad
...                          ...

定义宽视图

以下 XML 显示了 System.Diagnostics.Process 对象的宽视图架构。

<View>
  <Name>process</Name>
  <ViewSelectedBy>
    <TypeName>System.Diagnostics.Process</TypeName>
  </ViewSelectedBy>
  <GroupBy>...</GroupBy>
  <Controls>...</Controls>
  <WideControl>
    <WideEntries>
      <WideEntry>
        <WideItem>
          <PropertyName>ProcessName</PropertyName>
        </WideItem>
      </WideEntry>
    </WideEntries>
  </WideControl>
</View>

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

  • View 元素是宽视图的父元素。 (这是表、列表和自定义控件视图的同一父元素。
  • Name 元素指定视图的名称。 所有视图都需要此元素。
  • ViewSelectedBy 元素定义使用该视图的对象。 此元素是必需的。
  • GroupBy 元素定义何时显示新的对象组。 每当特定属性或脚本的值发生更改时,将启动一个新组。 此元素为可选元素。
  • 控件 元素定义由宽视图定义的自定义控件。 通过控件可以进一步指定数据的显示方式。 此元素为可选元素。 视图可以定义自己的自定义控件,也可以使用格式文件中任何视图可以使用的常用控件。 有关自定义控件的详细信息,请参阅 创建自定义控件
  • WideControl 元素及其子元素定义视图中显示的内容。 在前面的示例中,该视图旨在显示 System.Diagnostics.Process.ProcessName 属性。

有关定义简单宽视图的完整格式文件的示例,请参阅 宽视图(基本)

为宽视图提供定义

宽视图可以使用 WideControl 元素的子元素提供一个或多个定义。 通常,视图只有一个定义。 在以下示例中,该视图提供了一个定义,该定义显示 System.Diagnostics.Process.ProcessName 属性。 宽视图可以显示属性的值或脚本的值(未在示例中显示)。

<WideControl>
  <AutoSize/>
  <ColumnNumber></ColumnNumber>
  <WideEntries>
    <WideEntry>
      <WideItem>
        <PropertyName>ProcessName</PropertyName>
      </WideItem>
    </WideEntry>
  </WideEntries>
</WideControl>

以下 XML 元素可用于提供宽视图的定义:

  • WideControl 元素及其子元素定义视图中显示的内容。
  • AutoSize 元素指定是否根据数据大小调整列大小和列数。 此元素为可选元素。
  • ColumnNumber 元素指定宽视图中显示的列数。 此元素为可选元素。
  • WideEntries 元素提供视图的定义。 在大多数情况下,视图只有一个定义。 此元素是必需的。
  • WideEntry 元素提供视图的定义。 至少需要一 WideEntry;但是,可以添加的元素数没有最大限制。 在大多数情况下,视图只有一个定义。
  • EntrySelectedBy 元素指定由特定定义显示的对象。 此元素是可选的,仅在定义显示不同对象的多个 WideEntry 元素时才需要此元素。
  • WideItem 元素指定视图显示的数据。 与其他类型的视图相比,宽控件只能显示一个项目。
  • PropertyName 元素指定视图显示其值的属性。 必须指定属性或脚本,但不能同时指定这两个属性。
  • ScriptBlock 元素指定视图显示其值的脚本。 必须指定脚本或属性,但不能同时指定两者。
  • FormatString 元素指定用于显示数据的模式。 此元素为可选元素。

有关定义宽视图定义的完整格式文件的示例,请参阅 宽视图(基本)

定义使用宽视图的对象

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

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

<View>
  <Name>System.ServiceProcess.ServiceController</Name>
  <ViewSelectedBy>
    <TypeName>System.Diagnostics.Process</TypeName>
  </ViewSelectedBy>
  <WideControl>...</WideControl>
</View>

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

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

有关完整格式文件的示例,请参阅 宽视图(基本)

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

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

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

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

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

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

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

  • EntrySelectedBy 元素定义显示的对象。
  • TypeName 元素指定定义显示的 .NET。 使用此元素时,需要完全限定的 .NET 类型名称。 必须为定义指定至少一个类型、选择集或选择条件,但不能指定最大数量的元素。
  • SelectionSetName 元素(未显示)指定一组可由此定义显示的对象。 必须为定义指定至少一个类型、选择集或选择条件,但不能指定最大数量的元素。
  • SelectionCondition 元素(未显示)指定必须存在的条件才能使用此定义。 必须为定义指定至少一个类型、选择集或选择条件,但不能指定最大数量的元素。 有关定义选择条件的详细信息,请参阅 定义用于显示数据的条件。

在宽视图中显示对象组

可以将宽视图显示的对象分隔为组。 这并不意味着你定义了一个组,只要特定属性或脚本的值发生更改,Windows PowerShell 才会启动一个新组。 在以下示例中,每当 System.ServiceProcess.ServiceController.ServiceType 属性更改时,将启动一个新组。

<GroupBy>
  <Label>Service Type</Label>
  <PropertyName>ServiceType</PropertyName>
</GroupBy>

以下 XML 元素用于定义何时启动组:

  • GroupBy 元素定义启动新组的属性或脚本,并定义组的显示方式。
  • PropertyName 元素指定每当其值更改时启动新组的属性。 必须指定属性或脚本来启动组,但不能同时指定这两个属性。
  • ScriptBlock 元素指定每当其值更改时启动新组的脚本。 必须指定脚本或属性来启动组,但不能同时指定这两个组。
  • Label 元素定义在每个组的开头显示的标签。 除了此元素指定的文本之外,Windows PowerShell 还显示触发新组的值,并在标签前后添加一个空白行。 此元素为可选元素。
  • customControl 元素 定义用于显示数据的控件。 此元素为可选元素。
  • CustomControlName 元素指定用于显示数据的公用控件或视图控件。 此元素为可选元素。

有关定义组的完整格式文件的示例,请参阅 宽视图(GroupBy)

使用格式字符串

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

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

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

  • WideItem 元素指定视图显示的数据。
  • PropertyName 元素指定视图显示其值的属性。 必须指定属性或脚本,但不能同时指定这两个属性。
  • FormatString 元素指定一种格式模式,用于定义属性或脚本值在视图中的显示方式
  • ScriptBlock 元素(未显示)指定视图显示其值的脚本。 必须指定脚本或属性,但不能同时指定两者。

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

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

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

  • WideItem 元素指定视图显示的数据。
  • ScriptBlock 元素(未显示)指定视图显示其值的脚本。 必须指定脚本或属性,但不能同时指定两者。

另请参阅