PowerShell Format-Table: Организация вывода в столбцах

PowerShell довольно сильно помогает разработчику, но он не может читать мысли. Он не может самостоятельно определить, какой вид вывода вам нужен. Он предоставит свой лучший вариант с помощью формата по умолчанию, но решение о том, как вы хотите получить вывод, остается за вами. С помощью командлета PowerShell Format-Table вы можете настроить вывод по своему усмотрению.

PowerShell имеет систему форматирования, которая предоставляет формат вывода по умолчанию и позволяет изменять формат вывода в зависимости от типа объекта. Если вы не хотите изучать XML и способы всегда форматировать вывод в определенном формате, у вас также есть командлеты, такие как Powershell format-table, Format-List и Format-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.

Использование командлета Format-Table PowerShell и 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

Вывод командлета Format-Table PowerShell всегда пытается отобразить информацию в виде таблицы. Если значения свойств слишком длинные для отображения, он заменит отсутствующий текст многоточием, чтобы указать, что доступна дополнительная информация, но просто не отображается.

Format-Table cmdlet имеет много различных способов обработки вывода. Ознакомьтесь с полной документацией по Format-Table на сайте Microsoft docs.

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