[玩转系统] PowerShell 格式表:综合指南
作者:精品下载站 日期:2024-12-14 21:37:35 浏览:15 分类:玩电脑
PowerShell 格式表:综合指南
作为 PowerShell 用户,您可能已经注意到默认输出格式可能难以阅读和解释。值得庆幸的是,PowerShell 提供了一个强大的命令 - Format-Table
- 允许您以清晰简洁的方式格式化输出。在这份综合指南中,我将带您了解 PowerShell Format-Table 的详细信息,包括其优点、高级技术和要避免的常见错误。
PowerShell 格式表简介
在深入了解细节之前,让我们先从基础知识开始。 PowerShell Format-Table 是一个允许您以表格格式显示输出的命令。这使得读取、排序和过滤数据变得更加容易。该命令易于使用,并且可以自定义以满足您的特定需求。此外,它还允许自定义列宽、排序和显示计算值。
使用 PowerShell Format-Table 的最大优点之一是它简化了复杂的数据结构。例如,如果您有一个具有多个属性的复杂对象,则可能很难以默认格式读取输出。格式表允许您选择要显示的属性并以清晰简洁的方式设置它们的格式。
使用 PowerShell 格式表的好处
使用 PowerShell Format-Table 有几个好处。主要优点之一是它允许您自定义输出以满足您的特定需求。您可以选择要显示的属性、设置它们的格式,甚至调整列宽以适合您的数据。
使用 PowerShell Format-Table 的另一个优点是它可以更轻松地对数据进行排序和筛选。您可以按任何列对数据进行排序,并且可以使用 Where-Object
命令过滤数据。
PowerShell Format-Table 还允许您将输出导出到 CSV 文件,这对于与其他人共享数据或将其导入其他应用程序非常有用。
了解 PowerShell 输出到表
在我们深入了解 PowerShell Format-Table 的细节之前,了解 PowerShell 如何输出数据非常重要。默认情况下,PowerShell 将数据输出为一系列对象。这些对象可以具有不同的属性,可以使用 Get-Member 命令显示这些属性。
要以表格格式显示此数据,我们使用Format-Table
命令。该命令允许我们选择要显示的属性,并以清晰简洁的方式设置它们的格式。基本语法如下:
Format-Table [-Property] <String[]> [-AutoSize] [-Wrap] [-RepeatHeader] [-GroupBy <Object[]>] [-HideTableHeaders] [-InputObject <PSObject>] [-Property <String[]>] [-Expand <String[]>] [-ShowError] [-DisplayError] [-View <TableControl>] [<CommonParameters>]
Format-Table cmdlet 包含多个参数,使您能够自定义输出数据。以下是重要参数的细分:
-Property
property 参数指定应在表中显示对象的哪些属性。
-AutoSize
自动调整列宽以适合数据。
-Wrap
使用 -Wrap 参数将列中的文本换行到下一行以适合列宽。
-GroupBy
该参数按指定属性对数据进行分组。
-HideTableHeaders
隐藏表格标题。
-InputObject
指定输入数据。
使用 PowerShell Format-Table 设置输出格式
现在我们了解了 PowerShell 输出和 Format-Table 的基础知识,让我们深入了解如何格式化输出的细节。 Format-Table
命令有多个选项,可让您自定义输出。
首先,让我们看一个基本示例。假设我们要列出计算机上具有某些属性的服务:
Get-service | select -Property Name, CanShutdown, CanStop, DisplayName, Status, StartType -First 5
这将列出指定的每个属性并创建列表格式的输出,如下所示:
然后,我们将数组通过管道传输到 Format-Table 并指定我们想要显示的属性。输出应如下所示:
Get-service | select -Property Name, CanShutdown, CanStop, DisplayName, Status, StartType -First 10 | Format-Table
从输出中选择特定列
您可以使用 Format-Table cmdlet 从上一个 cmdlet 的输出中选择特定列。举例来说,我们只想查看对象的选定属性,例如文件和文件夹的名称、上次修改时间、上次访问时间以及创建时间:
Get-ChildItem -Path C:\Windows\System32 | Format-table -Property Name, LastAccessTime,LastWriteTime,CreationTime
调整 PowerShell Format-Table 中的列宽
在某些情况下,默认列宽可能不足以显示您的数据。幸运的是,PowerShell Format-Table 允许您使用 -AutoSize
参数调整列大小。此参数调整列宽以最小化截断并在显示所有内容时使用尽可能小的宽度。当您处理长度不同的数据列并且希望查看尽可能多的数据而没有大量空白空间时,此功能特别有用。
例如,假设我们需要检索名称中以“Windows”开头的进程列表:
Get-Service -DisplayName Windows* | Format-Table
此代码检索包含三列的进程列表。但是,列中的某些文本会被截断以适合屏幕宽度。您还可以使用别名 FT。
我们可以将此输出传递给 Format-Table
并使用 -AutoSize
参数来调整列宽:
Get-Service -DisplayName Windows* | Format-Table -AutoSize
命令行上的输出应如下所示:
-AutoSize
参数会自动调整列宽以适合数据。这意味着具有较长数据的列将比具有较短数据的列更宽。这可确保不会截断或隐藏任何信息。
要手动调整数据的列宽,只需指定要调整的属性的名称,后跟所需的字符宽度。例如,要将“显示名称”属性的宽度调整为 10 个字符(至少!),您可以使用以下命令:
Get-Service | Select-Object Name, DisplayName, Status |
Format-Table -Property Name,@{Expression={$_.DisplayName};Label="Title";Width=10}, @{Expression={$_.Status};Label="Service Status";Width=10}
-Wrap 参数允许您创建跨多行的表。这是一个例子:
使用 Format-Table 将 PowerShell 输出导出到 CSV
将 PowerShell 输出导出为 CSV 可让您轻松与他人共享数据。通过将输出导出到 CSV,您可以创建可以在 Microsoft Excel 或其他电子表格程序中打开的文件。当与同事共享数据或以更精细的方式分析数据时,这非常有用。
但是,格式表主要用于格式化控制台显示的输出。当您想要将数据导出到 CSV 时,您应该使用原始对象(如 Select-Object 返回的对象)并将它们直接传递给 Export-Csv。要使用 Format-Table 将 PowerShell 输出导出到 CSV,只需将输出从 Select-Object 通过管道传送到 Export-Csv cmdlet 即可。您可以使用 -Path 参数指定 CSV 文件的名称和位置。
假设您是系统管理员,并且您想要审核组织中计算机上安装的软件。您对已安装软件的 DisplayName、Version 和 Publisher 属性特别感兴趣。您决定使用 PowerShell 获取此信息并将其导出到 CSV 文件以供进一步分析或与您的团队共享。
以下是实现这一目标的方法:
# Fetch the installed software details
$softwareInfo = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -Ne $Null}
#Display the Result in console with Format-Table
$softwareInfo | Format-Table DisplayName, DisplayVersion, Publisher
# Export the information to a CSV file
$softwareInfo | Select-Object DisplayName, DisplayVersion, Publisher | Export-Csv -Path 'C:\Temp\InstalledSoftware.csv' -NoTypeInformation
这里需要注意的重要一点是,导出到 CSV 文件时不要使用 Format-Table。在 Export-Csv 之前使用 Format-Table 是不合适的,并且不会产生预期的 CSV 输出。
以 PowerShell 格式表对数据进行排序
在 PowerShell Format-Table 中对数据进行排序是一项有用的功能,可让您快速识别大量数据中的趋势和模式。默认情况下,PowerShell Format-Table 将根据表的第一列对数据进行排序。但是,您还可以使用 Sort-Object cmdlet 根据其他列对数据进行排序。
要对 PowerShell Format-Table 中的数据进行排序,只需在应用 Format-Table 之前将命令输出通过管道传输到 Sort-Object 即可。例如,要按 CPU 使用率对 Get-Process cmdlet 的输出进行排序,您可以使用以下命令:
Get-Process | Select-Object Name, CPU, WorkingSet | Sort-Object -Property CPU -Descending | Format-Table
PowerShell 控制台中的输出:
同样,要过滤数据,您可以将Where-Object cmdlet 与Format-Table 结合使用。这允许您指定数据必须满足的条件才能包含在输出中。例如,如果您只想显示使用超过一定内存量的进程,可以使用以下命令:
Get-Process | Where-Object { $_.WorkingSet -gt 1GB } | Format-Table
这将过滤进程列表并仅显示工作集大小大于 1GB 的进程。通过将排序和过滤与 Format-Table 的格式化功能相结合,您可以轻松地以既美观又信息丰富的方式操作和显示数据。
Format-Table cmdlet 中的 GroupBy 参数
Format-Table 中的 GroupBy 参数根据属性值将输出分成表格。要使用 GroupBy,需要首先将原始命令的结果通过管道传输到 Sort-Object。这允许根据特定属性为每个组创建单独的表。
Get-Process | Sort-Object -Property basepriority | Format-Table -GroupBy basepriority -Wrap
输出 :
如何使用格式表表达式创建自定义列?
PowerShell Format-Table 命令可用于通过使用哈希表的计算值来创建自定义列名称。 Format-Table 的 Expression 参数允许设置自定义列名称并显示计算的列值。以下示例演示了如何使用脚本块重命名 Get-Service 命令输出中的列:
Get-Service | Select-Object Name, DisplayName, Status |
Format-Table -Property Name,@{Expression={$_.DisplayName};Label="Title"}, @{Expression={$_.Status};Label="Service Status"}
这是使用计算创建新列的另一个示例:
Get-Process | Where {$_.StartTime -ne $null} |
Format-Table ProcessName, @{Label="Running Time"; Expression={(get-date) - $_.StartTime}}
在此示例中,我们添加了一个计算属性“运行时间”来查找总运行时间。
包起来
在这份综合指南中,我们探讨了有关使用 PowerShell Format-Table 充分发挥其潜力所需了解的所有内容。从理解 PowerShell 输出到将输出格式化为表格、调整列宽以及将输出导出为 CSV,我们已经涵盖了所有基础知识。我们还探索了一些高级技术,例如排序、分组、显示计算值以及创建自定义列名称。理解和利用 Format-Table 命令对于 PowerShell 脚本开发至关重要,尤其是出于报告目的。通过遵循本指南中解释的示例,您可以掌握格式表并在 PowerShell 脚本中有效地使用它。
经常问的问题:
如何将 PowerShell 命令输出格式化为表格?
要将 PowerShell 命令的输出格式化为表格,可以使用 Format-Table cmdlet。此 cmdlet 允许您指定要显示的属性并自定义表的外观。例如:
Get-Process | Format-Table Name, CPU
By using the Format-Table cmdlet, you can present your data in a clear and organized manner.How do I sort a format table in PowerShell?
To sort a format table in PowerShell, you can use the Sort-Object cmdlet. Here is an example of how to do it:
Get-Process | Sort-Object -Property CPU | Format-Table -AutoSize
您可以将 CPU 替换为您想要排序的任何其他属性。此外,您可以将 -Descending 参数与 Sort-Object 一起使用以按降序排序。
如何在 PowerShell 输出表中使用自定义标头?
要在 PowerShell 输出表中使用自定义标头,您可以使用带有 @{Label='HeaderName';Expression={Expression}} 语法的 Select-Object cmdlet,然后将输出通过管道传输到 Format-Table cmdlet。这允许您指定要显示的属性并为其分配自定义标题。例如,您可以使用以下命令:
Get-Process | Select-Object -Property @{Label="进程名称";表达式={$_.Name}},@{Label="CPU 使用率";表达式={$_.CPU}} | Format-Table
需要注意的是,Select-Object cmdlet 应在 Format-Table 之前使用,因为在选择之前进行格式化可能不会产生所需的结果。如何使用PowerShell格式列表?
要使用 PowerShell format-list 命令,您可以首先选择要格式化的一个或多个对象。然后,您可以将输出通过管道传输到 format-list 命令,后跟任何所需的参数或属性。这将以列表格式显示所选信息,使其更易于阅读和分析。例如:
Get-ChildItem -Path C:\Temp | Format-List -Property Root, FullName, Attributes, BaseName, PsDrive, PSIsContainer, PSProvider, Parent, Exists, LastAccessTime,Name,LastWriteTime,CreationTime
PowerShell 中的格式范围是什么?
Format-Wide(简称fw)是一个PowerShell cmdlet,它将管道中每个对象的单个属性显示为宽列表,而不是Format-Table的类似表格的格式。当您只想显示每个对象的一个属性时,应使用 Format-Wide。如果要显示多个属性,则应使用 Format-Table。
Get-ChildItem -Path C:\Temp | Format-Wide -Property FullName
这将使用控制台窗口的全宽向您显示所有文件和文件夹路径的列表。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[软件合集] 25年5月28日 精选软件37个
[软件合集] 25年5月27日 精选软件26个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[办公模版] office模板合集:包含word、Excel、PowerPoint、Access四类共计2000多个模板
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[音乐] 华语流行伤感情经典歌无损音乐合集(700多首)
[影视] 内地绝版高清录像带 [mpg]
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag