ZetCode

PowerShell Format-Table

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍 PowerShell 中的 Format-Table cmdlet。此 cmdlet 将命令输出格式化为包含选定属性的表。

Format-Table 基础知识

Format-Table cmdlet 将输出格式化为表。它以列的形式显示对象的选定属性。默认情况下,PowerShell 对许多 cmdlet 使用 Format-Table。您可以自定义要显示的属性及其顺序。

当您想以清晰的表格格式查看特定的对象属性时,Format-Table 特别有用。它有助于组织输出,提高可读性。该 cmdlet 支持各种参数进行自定义。

Format-Table 的基本用法

使用 Format-Table 的最简单方法是将其输出通过管道传递给它。这将输出格式化为具有默认属性的表。表将根据内容自动调整列宽。这对于快速查看对象属性很有用。

format1.ps1
Get-Process | Format-Table

此命令检索所有进程并将其格式化为表。输出显示 Name、Id 和 CPU 使用率等默认属性。表格式使扫描信息更容易。

选择特定属性

您可以使用 -Property 参数选择要显示的属性。这使您可以自定义表列。可以在逗号分隔的列表中指定多个属性。顺序决定列的顺序。

format2.ps1
Get-Process | Format-Table -Property Name, Id, CPU, WorkingSet

此命令仅显示 Name、Id、CPU 和 WorkingSet 列。输出比默认视图更聚焦。WorkingSet 以字节为单位显示内存使用情况。

PS C:\> .\format2.ps1

Name                     Id        CPU WorkingSet
----                     --        --- ----------
chrome                6784   0.328125   27262976
chrome                6792   0.281250   26615808
explorer              6824   0.109375   35799040

自定义列宽

-AutoSize 参数可调整列宽以适应内容。没有它,列可能会被截断。对于宽表,-Wrap 可以显示所有内容。这些参数有助于优化表布局。

format3.ps1
Get-Process | Format-Table -Property Name, Path -AutoSize

此命令确保所有进程名称和路径都完全可见。-AutoSize 参数可防止截断长路径。在查看具有可变长度属性的项目时,这很有用。

分组输出

-GroupBy 参数按属性值组织输出。这会为每个唯一值创建单独的表。分组有助于按类别分析数据。分组的属性出现在每个部分上方作为标题。

format4.ps1
Get-Service | Format-Table -Property Name, Status -GroupBy StartType

此命令按 StartType(自动、手动等)对服务进行分组。每个组显示具有该启动类型的服务。输出比平面列表更有条理。

计算属性

您可以使用计算属性创建自定义列。这些属性使用脚本块来转换或组合数据。@{label="Name";expression={...}} 语法定义它们。这使得强大的输出自定义成为可能。

format5.ps1
Get-Process | Format-Table Name, 
    @{label="Memory(MB)";expression={$_.WorkingSet/1MB -as [int]}}

此命令添加了一个自定义列,以 MB 为单位显示内存使用情况。expression 将字节转换为兆字节。-as [int] 将结果格式化为整数。这使得内存使用情况更容易理解。

隐藏标题

-HideTableHeaders 参数会从输出中删除列标题。在将输出通过管道传递给其他命令时,这很有用。标题可能会干扰进一步的处理。输出仅包含数据行。

format6.ps1
Get-Process | Select-Object -First 3 | Format-Table -HideTableHeaders

此命令显示三个进程,没有列标题。对于处理数据的脚本,输出更干净。标题通常仅用于人类可读的输出。

组合格式选项

您可以组合多种格式选项以获得最佳输出。此示例显示了具有选定属性、自动调整大小和自定义列的进程。复杂的格式使输出更具信息性和可读性。

format7.ps1
Get-Process | 
    Format-Table -Property Name, 
        @{label="PID";expression={$_.Id}},
        @{label="CPU(s)";expression={$_.CPU}},
        @{label="Memory(MB)";expression={[math]::Round($_.WorkingSet/1MB,1)}} -AutoSize

此命令创建一个全面的进程表,其中包含自定义列。内存以 MB 为单位显示,保留一位小数。-AutoSize 确保所有数据都可见。此格式对于系统监控非常有用。

来源

PowerShell 文档

在本文中,我们介绍了 PowerShell 中的 Format-Table cmdlet。

作者

我叫 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PowerShell 教程