当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 格式化文件概述

作者:精品下载站 日期:2024-12-14 02:44:38 浏览:13 分类:玩电脑

格式化文件概述


命令(cmdlet、函数和脚本)返回的对象的显示格式是使用格式化文件(format.ps1xml 文件)定义的。 PowerShell 提供了其中几个文件,用于定义 PowerShell 提供的命令返回的对象的显示格式,例如 Get-Process cmdlet 返回的 System.Diagnostics.Process 对象。但是,您也可以创建自己的自定义格式文件来覆盖默认显示格式,或者可以编写自定义格式文件来定义您自己的命令返回的对象的显示。

这很重要

格式化文件并不能确定返回到管道的对象的元素。当对象返回到管道时,该对象的所有成员都可用,即使某些成员未显示也是如此。

PowerShell 使用这些格式化文件中的数据来确定显示的内容以及显示的数据的格式。显示的数据可以包括对象的属性或脚本的值。如果您想要显示某些无法直接从对象属性获得的值,则可以使用脚本,例如将对象的两个属性的值相加,然后将总和显示为一条数据。显示数据的格式化是通过定义要显示的对象的视图来完成的。您可以为每个对象定义单个视图,可以为多个对象定义单个视图,也可以为同一对象定义多个视图。您可以定义的视图数量没有限制。

格式化文件的共同特征

每个格式化文件可以定义以下组件,这些组件可以在该文件定义的所有视图之间共享:

  • 默认配置设置,例如表格行中显示的数据如果长于列宽是否显示在下一行。有关这些设置的详细信息,请参阅 TableRowEntry 的换行元素。

  • 可以通过格式化文件的任何视图显示的对象集。有关这些集(称为选择集)的详细信息,请参阅定义对象集。

  • 格式化文件的所有视图均可使用的通用控件。控件使您可以更好地控制数据的显示方式。有关控件的更多信息,请参阅定义自定义控件。

设置视图格式

格式化视图可以以表格格式、列表格式、宽格式和自定义格式显示对象。在大多数情况下,每个格式定义都由一组描述视图的 XML 标记来描述。每个视图都包含视图的名称、使用该视图的对象以及视图的元素,例如表视图的列和行信息。

表格视图

在一列或多列中列出对象或脚本块值的属性。每列代表对象的单个属性或脚本值。您可以定义一个表视图来显示对象的所有属性、对象属性的子集或属性和脚本值的组合。表的每一行代表一个返回的对象。创建表视图与将对象通过管道传输到 Format-Table cmdlet 非常相似。有关此视图的更多信息,请参阅表视图。

列表视图

在单列中列出对象或脚本值的属性。列表的每一行显示一个可选标签或属性名称,后跟属性或脚本的值。创建列表视图与通过管道将对象传递给 Format-List cmdlet 非常相似。有关此视图的更多信息,请参阅列表视图。

宽视野

在一列或多列中列出对象的单个属性或脚本值。该视图没有标签或标题。创建宽视图与通过管道将对象传递给 Format-Wide cmdlet 非常相似。有关此视图的更多信息,请参阅宽视图。

自定义视图

显示对象属性或脚本值的可自定义视图,该视图不遵守表视图、列表视图或宽视图的严格结构。您可以定义独立的自定义视图,也可以定义由其他视图(例如表视图或列表视图)使用的自定义视图。创建自定义视图与通过管道将对象传递给 Format-Custom cmdlet 非常相似。有关此视图的更多信息,请参阅自定义视图。

视图的组成部分

以下 XML 示例显示了视图的基本 XML 组件。各个 XML 元素根据您要创建的视图而有所不同,但视图的基本组件都是相同的。

首先,每个视图都有一个 Name 元素,用于指定用于引用该视图的用户友好名称。一个 ViewSelectedBy 元素定义视图显示哪些 .NET 对象,以及一个 control 元素定义视图。

<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>

在控制元素内,您可以定义一个或多个 entry 元素。如果使用多个定义,则必须指定哪些 .NET 对象使用每个定义。通常,每个控件只需要一个条目和一个定义。

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

在视图的每个条目元素中,您可以指定定义该视图显示的 .NET 属性或脚本的 item 元素。

<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 格式和类型文件

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯