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

[玩转系统] Format-Table (Microsoft.PowerShell.Utility)

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

Format-Table (Microsoft.PowerShell.Utility)


Format-Table

模块 :Microsoft.PowerShell.Utility

将输出格式化为表格。

句法

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

描述

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

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

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

示例

示例 1:格式化 PowerShell 主机

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

Get-Host | Format-Table -AutoSize

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

示例 2:按 BasePriority 格式化进程

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

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

Get-Process cmdlet 获取代表计算机上每个进程的对象,并将它们沿着管道发送到 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 视图将每个进程的开始时间转换为短日期,然后按开始日期对进程进行分组。

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

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

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

本示例中的自定义视图是根据 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

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

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

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

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

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

NameDependentServices 是对象类型的两个属性。要查看所有属性:Get-Service |获取成员-MemberType 属性

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

此示例显示一个表,其中包含本地计算机 notepad 进程的进程名称和总运行时间。总运行时间是通过当前时间减去每个进程的启动时间来计算的。

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 获取本地计算机的所有 notepad 进程,并将对象发送到管道中。 Format-Table 显示一个包含两列的表:ProcessName(一个 Get-Process 属性)和 TotalRunningTime(一个计算的财产。

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

示例 7:格式化记事本进程

此示例使用 Get-CimInstance 获取本地计算机上所有 notepad 进程的运行时间。您可以将 Get-CimInstanceComputerName 参数结合使用,从远程计算机获取信息。

$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 属性和新的计算属性, 总运行时间

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

示例 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 根据数据宽度调整列大小和列数。默认情况下,列的大小和数量由视图决定。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-DisplayError

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

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Expand

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

  • EnumOnly:显示集合中对象的属性。
  • CoreOnly:显示集合对象的属性。
  • 两者:显示集合对象的属性以及集合中对象的属性。
类型 :

String

接受的值:

仅核心、仅枚举、两者

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Force

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

格式化某些 .NET 类型时也需要。有关详细信息,请参阅注释部分。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-GroupBy

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

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

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

  • 名称(或标签)- <string>
  • 表达式 - <string><script; block>
  • 格式字符串 - <string>

有关详细信息,请参阅 about_Calculated_Properties。

类型 :

目的

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-HideTableHeaders

省略表中的列标题。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-InputObject

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

类型 :

PS对象

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Property

指定显示中出现的对象属性及其出现的顺序。键入一个或多个属性名称(以逗号分隔),或使用哈希表显示计算属性。允许使用通配符。

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

属性参数是可选的。您不能在同一命令中使用属性查看参数。

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

  • 名称(或标签)<string>
  • 表达式 - <string><script; block>
  • 格式字符串 - <string>
  • 宽度 - <int32> - 必须大于 0
  • 对齐方式 - 值可以是 LeftCenterRight

有关详细信息,请参阅 about_Calculated_Properties。

类型 :

Object[]

位置:

0

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-RepeatHeader

每次屏幕填满后重复显示表格标题。当输出通过管道传输到寻呼机(例如 lessmore)或使用屏幕阅读器寻呼时,重复标头非常有用。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-ShowError

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

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-View

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

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

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

您不能在同一命令中使用属性查看参数。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Wrap

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

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

PSObject

您可以通过管道将任何对象传递给此 cmdlet。

输出

Microsoft.PowerShell.Commands.Internal.Format

此 cmdlet 返回表示表的格式对象。

笔记

PowerShell 包含以下 Format-Table 别名:

  • 所有平台:

      ft

    PowerShell 7.2 引入了对输出进行着色的新功能。可以使用 $PSStyle 自动变量来管理颜色。 $PSStyle.Formatting.TableHeader 属性定义用于 Format-Table 显示的表格标题的颜色。有关此设置的更多信息,请参阅 about_ANSI_Terminals。

    如果要将 Format-TableProperty 参数一起使用,则需要在以下任一条件下包含 Force 参数:

    • 输入对象通常使用 ToString() 方法进行带外格式化。这适用于 [string] 和 .NET 基元类型,它们是内置数字类型的超集,例如 [int][long] 等。

    • 输入对象没有公共属性。

    • 输入对象是 PowerShell 用于除 Success 输出流之外的输出流的包装器类型的实例。仅当这些包装器类型发送到成功输出流时,这才适用,该输出流需要首先通过 ErrorVariable 等通用参数捕获它们,或者使用 *>&1 等重定向。 。

      • 包装器类型包括:

        • 系统.管理.自动化.错误记录
    • 系统.管理.自动化.警告记录
    • 系统.管理.自动化.详细记录
    • 系统.管理.自动化.调试记录
    • 系统.管理.自动化.信息记录

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

    取消回复欢迎 发表评论:

    关灯