PowerShell Format-Table:在列中組織輸出

PowerShell 在很大程度上提供了開發者的協助,但它無法讀取您的思維。它無法內在地知道您所尋找的輸出類型。它會通過默認格式提供其最佳猜測,但最終決定如何返回輸出則由您來決定。使用 PowerShell 的 Format-Table 命令,您可以調整輸出以適應您的需求。

PowerShell 具有一個格式系統,可以根據對象類型的不同更改輸出的格式,並提供默認輸出。如果您不想學習 XML 以及如何始終以特定方式格式化輸出,您還可以使用像 PowerShell format-table、Format-ListFormat-Wide 這樣的命令。在文件系統中的 PS1XML 文件或使用任何格式命令都可以以不同的方式顯示輸出。

如果不使用任何特殊格式,預設情況下,PowerShell 會使用其自己的格式。每當返回特定對象時,您可能只能看到該實際對象內容的有限部分。例如,只查看單個文件夾,您只能看到父目錄和一些屬性。

PS> Get-Item -Path C:\Windows\

Directory: C:\
Mode	LastWriteTime		Length	Name
---- 	------------- 		------	----

d-----	11/24/2017 9:57 AM 			Windows

但是,將相同的命令管道到 Select-Object -Property *,看看會發生什麼。

PS> Get-Item -Path C:\Windows\ | Select-Object -Property *

PSPath 				: Microsoft.PowerShell.Core\FileSystem::C:\Windows\
PSParentPath 		: Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName 		: Windows
PSDrive				: C
PSProvider 			: Microsoft.PowerShell.Core\FileSystem
PSIsContainer 		: True
Mode 				: d-----
BaseName 			: Windows
Target 				: {C:\Windows}
LinkType 			:
Name 				: Windows
FullName 			: C:\Windows\
Parent 				:
Exists 				: True
Root 				: C:\
Extension 			:
CreationTime 		: 3/18/2017 5:40:20 AM
CreationTimeUtc 	: 3/18/2017 11:40:20 AM
LastAccessTime 		: 11/24/2017 9:57:51 AM
LastAccessTimeUtc	: 11/24/2017 3:57:51 PM
LastWriteTime 		: 11/24/2017 9:57:51 AM
LastWriteTimeUtc 	: 11/24/2017 3:57:51 PM
Attributes 			: Directory

PowerShell已經將許多物件的屬性隱藏起來,因為通常你不需要看到所有這些信息。PowerShell提供了一個預設的視圖,但這並不意味著這是你唯一的選擇。我們可以通過格式化命令來改變這個視圖。

最受歡迎的格式化命令是Format-Table。根據PowerShell的幫助文件:

Format-Table命令將命令的輸出格式化為一個表格,每列中的物件選擇的屬性。物件類型確定了默認的佈局和在每列中顯示的屬性,但你可以使用Property參數來選擇你想要看到的屬性。

你還可以使用哈希表在顯示物件之前添加計算的屬性,並指定表格中的列標題。要添加計算的屬性,使用Property或GroupBy參數。

使用Powershell的Format-Table和Select-Object來選擇個別的物件屬性,如果屬性值不超過當前控制台的寬度,看起來是一樣的。但是一旦你嘗試顯示大量的物件,你會發現Format-Table仍然保持表格格式,而Select-Object則會將屬性顯示在每一行上。

PS> Get-Item -Path C:\Windows\ | Select-Object -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime 	: 11/24/2017 9:57:51 AM
Name 			: Windows
LastWriteTime 	: 11/24/2017 9:57:51 AM
PSProvider 		: Microsoft.PowerShell.Core\FileSystem
CreationTime 	: 3/18/2017 5:40:20 AM

PS> Get-Item -Path C:\Windows\ | Format-Table -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime			Name	LastWriteTime			PSProvider	CreationTime
-------------- 			---- 	------------- 			---------- 	------------
11/24/2017 9:57:51 AM 	Windows 11/24/2017 9:57:51 AM	Microsoft.PowerShell.Core\FileSystem	3/18/2017 5:40:20 AM

Powershell的Format-Table輸出將始終嘗試以表格格式顯示信息。如果屬性值太長無法顯示,它將用省略號替換任何缺失的文本,以指示還有更多的信息可用但未顯示。

Format-Table 命令有很多不同的方式可以操作輸出。請查看 Microsoft docs 上的 完整文件的 Format-Table

Source:
https://adamtheautomator.com/powershell-format-table/