Format-Table

将输出的格式设置为一个表。

语法

Format-Table
      [-AutoSize]
      [-RepeatHeader]
      [-HideTableHeaders]
      [-Wrap]
      [[-Property] <Object[]>]
      [-GroupBy <Object>]
      [-View <String>]
      [-ShowError]
      [-DisplayError]
      [-Force]
      [-Expand <String>]
      [-InputObject <PSObject>]
      [<CommonParameters>]

说明

cmdlet Format-Table 将命令的输出格式化为表,其中包含每个列中对象的选定属性。 对象类型确定每列中显示的默认布局和属性。 可以使用 Property 参数选择要显示的属性。

PowerShell 使用默认格式化程序来定义对象类型的显示方式。 可以使用 .ps1xml 文件创建显示具有指定属性的输出表的自定义视图。 创建自定义视图后,使用 View 参数将表与自定义视图一起显示。 有关视图的详细信息,请参阅 about_Format.ps1xml

可以使用哈希表在显示对象之前向其添加计算属性,并在表中指定列标题。 若要添加计算属性,请使用 PropertyGroupBy 参数。 有关哈希表的详细信息,请参阅 about_Hash_Tables

示例

示例 1:设置 PowerShell 主机格式

本示例在表中显示有关 PowerShell 主机程序的信息。

Get-Host | Format-Table -AutoSize

cmdlet Get-Host 获取代表主机的 System.Management.Automation.Internal.Host.InternalHost 对象。 对象在管道 Format-Table 中向下发送到表中并显示在表中。 AutoSize 参数调整列宽以最大程度地减少截断。

示例 2:按 BasePriority 设置进程格式

在此示例中,进程显示在具有相同 BasePriority 属性的组中。

Get-Process | Sort-Object -Property BasePriority | Format-Table -GroupBy BasePriority -Wrap

cmdlet Get-Process 获取表示计算机上的每个进程的 对象,并将这些对象通过管道向下发送到 Sort-Object。 对象按其 BasePriority 属性的顺序排序。

排序的对象在管道中向下发送到 Format-TableGroupBy 参数根据 BasePriority 属性的值将进程数据排列为多个组。 Wrap 参数可确保数据不会被截断。

示例 3:按开始日期设置进程格式

此示例显示有关计算机上运行的进程的信息。 对象经过排序,并使用 Format-Table 视图按开始日期对对象进行分组。

Get-Process | Sort-Object StartTime | Format-Table -View StartTime

Get-Process 获取代表计算机上运行的进程的 System.Diagnostics.Process 对象。 对象在管道中向下发送到 Sort-Object,并根据 StartTime 属性进行排序。

排序的对象在管道中向下发送到 Format-TableView 参数指定在 PowerShell DotNetTypes.format.ps1xml 文件中为 System.Diagnostics.Process 对象定义的 StartTime 视图。 StartTime 视图将每个进程的开始时间转换为短日期,然后按开始日期对进程进行分组。

该文件 DotNetTypes.format.ps1xml 包含进程的 “优先级 ”视图。 可以使用自定义视图创建自己的 format.ps1xml 文件。

示例 4:对表输出使用自定义视图

在此示例中,自定义视图显示目录的内容。 自定义视图将 CreationTime 列添加到由 Get-ChildItem创建的 System.IO.DirectoryInfoSystem.IO.FileInfo 对象的表输出中。

此示例中的自定义视图是从 PowerShell 源代码中定义的视图创建的。 有关用于创建此示例视图的视图和代码的详细信息,请参阅 about_Format.ps1xml

Get-ChildItem  -Path C:\Test | Format-Table -View mygciview

Directory: C:\Test

Mode                LastWriteTime              CreationTime         Length Name
----                -------------              ------------         ------ ----
d-----        11/4/2019     15:54       9/24/2019     15:54                Archives
d-----        8/27/2019     14:22       8/27/2019     14:22                Drawings
d-----       10/23/2019     09:38       2/25/2019     09:38                Files
-a----        11/7/2019     11:07       11/7/2019     11:07          11345 Alias.txt
-a----        2/27/2019     15:15       2/27/2019     15:15            258 alias_out.txt
-a----        2/27/2019     15:16       2/27/2019     15:16            258 alias_out2.txt

Get-ChildItem获取当前目录 的内容。 C:\Test System.IO.DirectoryInfoSystem.IO.FileInfo 对象在管道中向下发送。 Format-Table使用 View 参数指定包含 CreationTime 列的自定义视图 mygciview

的默认 Format-Table 输出 Get-ChildItem 不包括 CreationTime 列。

示例 5:使用表输出的属性

此示例使用 Property 参数在显示 属性 NameDependentServices 的两列表中显示计算机的所有服务。

Get-Service | Format-Table -Property Name, DependentServices

Get-Service 获取计算机上的所有服务,并将 System.ServiceProcess.ServiceController 对象发送到管道中。 Format-Table 使用 Property 参数指定 NameDependentServices 属性显示在表中。

NameDependentServices 是对象类型的两个属性。 查看所有属性: Get-Service | Get-Member -MemberType Properties

示例 6:设置进程格式并计算其运行时间

此示例显示一个表,其中包含本地计算机的 记事本 进程的进程名称和总运行时间。 总运行时间是通过从当前时间减去每个进程的开始时间而计算出来的。

Get-Process notepad |
  Format-Table ProcessName, @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}

ProcessName TotalRunningTime
----------- ----------------
notepad     03:20:00.2751767
notepad     00:00:16.7710520

Get-Process 获取所有本地计算机的 记事本 进程,并将对象发送到管道中。 Format-Table 显示包含两列的表: ProcessNameGet-Process 属性和 TotalRunningTime(计算属性)。

TotalRunningTime 属性由具有两个键的哈希表指定:LabelExpressionLabel 键指定属性名称。 Expression 键指定计算。 表达式获取每个进程对象的 StartTime 属性,并从获取当前日期和时间的 Get-Date 命令结果中减去该属性。

示例 7:设置记事本进程的格式

此示例使用 Get-CimInstance 获取本地计算机上所有 记事本 进程的运行时间。 可以将 与 ComputerName 参数一起使用Get-CimInstance,以便从远程计算机获取信息。

$Processes = Get-CimInstance -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{ Label = "Total Running Time"; Expression={(Get-Date) - $_.CreationDate}}

ProcessName Total Running Time
----------- ------------------
notepad.exe 03:39:39.6260693
notepad.exe 00:19:56.1376922

Get-CimInstance 获取 WMI Win32_Process 类的实例,该类描述名为 notepad.exe的所有本地计算机进程。 进程对象存储在 变量中 $Processes

变量中的 $Processes 进程对象在管道中向下发送到 Format-Table,该管道显示 ProcessName 属性和新的计算属性 “总运行时间”。

命令将新计算属性的名称 “总运行时间”分配给 Label 键。 表达式键的脚本块通过从当前日期减去进程创建日期来计算进程已运行的时间。 cmdlet Get-Date 获取当前日期。 创建日期从当前日期减去。 结果是 总运行时间的值。

示例 8:排查格式错误

以下示例演示使用表达式添加 DisplayErrorShowError 参数的结果。

Get-Date | Format-Table DayOfWeek,{ $_ / $null } -DisplayError

DayOfWeek  $_ / $null
--------- ------------
Wednesday #ERR

Get-Date | Format-Table DayOfWeek,{ $_ / $null } -ShowError

DayOfWeek  $_ / $null
--------- ------------
Wednesday

InvalidArgument: Failed to evaluate expression " $_ / $null ".

参数

-AutoSize

指示 cmdlet 根据数据的宽度调整列大小和列数。 默认情况下,列大小和数量由视图确定。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisplayError

指示 cmdlet 在命令行上显示错误。 在命令中 Format-Table 设置表达式的格式并需要对表达式进行故障排除时,此参数可用作调试辅助工具。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Expand

指定集合对象和集合中的 对象的格式。 此参数旨在设置支持 ICollection (System.Collections) 接口的对象的格式。 默认值为 EnumOnly。 此参数的可接受值如下所示:

  • EnumOnly:显示集合中对象的属性。
  • CoreOnly:显示集合对象的属性。
  • 两者:显示集合对象的属性和集合中对象的属性。
Type:String
Accepted values:CoreOnly, EnumOnly, Both
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

指示 cmdlet 指示 cmdlet 显示所有错误信息。 与 DisplayErrorShowError 参数一起使用。 默认情况下,当将错误对象写入到错误或显示流时,仅显示部分错误信息。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-GroupBy

根据属性值在单独的表中指定排序的输出。 例如,可以使用 GroupBy 根据服务的状态在单独的表中列出服务。

输入表达式或属性。 GroupBy 参数要求对对象进行排序。 在 之前使用 Sort-ObjectFormat-Table cmdlet 对对象进行分组。

GroupBy 参数的值可以是新的计算属性。 计算属性可以是脚本块或哈希表。 有效的键值对包括:

  • 名称 (或标签) - <string>
  • 表达式 - <string><script block>
  • FormatString - <string>

有关详细信息,请参阅 about_Calculated_Properties

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HideTableHeaders

省略表中的列标题。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定要设置格式的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Property

指定要在屏幕上显示的对象属性及其显示顺序。 键入一个或多个属性名称,用逗号分隔,或使用哈希表显示计算属性。 允许使用通配符。

如果省略此参数,则显示在显示中的属性取决于第一个对象的属性。 例如,如果第一个对象具有 PropertyAPropertyB ,但后续对象具有 PropertyAPropertyBPropertyC,则仅显示 PropertyAPropertyB 标头。

Property 参数是可选的。 不能在同一命令中使用 PropertyView 参数。

Property 参数的值可以是新的计算属性。 计算属性可以是脚本块或哈希表。 有效的键值对包括:

  • 名称 (或标签) <string>
  • 表达式 - <string><script block>
  • FormatString - <string>
  • Width - <int32> - 必须大于 0
  • 对齐方式 - 值可以是 LeftCenter、 或 Right

有关详细信息,请参阅 about_Calculated_Properties

Type:Object[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-RepeatHeader

在每次屏幕满后重复显示表的标题。 当输出通过管道传递给页面(例如 lessmore 使用屏幕阅读器进行分页)时,重复标头非常有用。

此参数已在 PowerShell 6.2 中添加。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowError

此参数通过管道发送错误。 在命令中 Format-Table 设置表达式格式并需要对表达式进行故障排除时,此参数可用作调试辅助。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-View

从 PowerShell 6 开始,默认视图在 PowerShell C# 源代码中定义。 *.format.ps1xml PowerShell 5.1 及更低版本中的文件在 PowerShell 6 及更高版本中不存在。

使用 View 参数可以为表指定备用格式或自定义视图。 可以使用默认 PowerShell 视图或创建自定义视图。 有关如何创建自定义视图的详细信息,请参阅 about_Format.ps1xml

View 参数的备用视图和自定义视图必须使用表格式,否则会Format-Table失败。 如果备用视图是列表,请使用 Format-List cmdlet。 如果备用视图不是列表或表,请使用 Format-Custom cmdlet。

不能在同一命令中使用 PropertyView 参数。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wrap

在下一行显示超过列宽的文本。 默认情况下,超过列宽的文本将被截断。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

PSObject

可以将管道中的任何 Format-Table对象发送到 。

输出

Microsoft.PowerShell.Commands.Internal.Format

Format-Table 返回表示表的格式对象。