Использование команд форматирования для изменения представления выходных данных
PowerShell содержит набор командлетов, позволяющих управлять отображением свойств для определенных объектов. Имена всех командлетов начинаются с глагола Format
. Они позволяют выбрать свойства, которые нужно отобразить.
Get-Command -Verb Format -Module Microsoft.PowerShell.Utility
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Format-Custom 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Hex 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-List 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Table 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Wide 6.1.0.0 Microsoft.PowerShell.Utility
В этой статье описываются командлеты Format-Wide
, Format-List
и Format-Table
.
Каждый тип объекта в PowerShell имеет свойства по умолчанию, используемые, если вы не выбираете свойства для отображения. Каждый командлет использует один и тот же параметр свойств, чтобы указать, какие свойства вы хотите отобразить. Так как Format-Wide
отображает только одно свойство, его параметр Property принимает только одно значение, но параметр Property у Format-List
и Format-Table
принимает список имен свойств.
В этом примере стандартные выходные данные командлета Get-Process
показывают, что есть два экземпляра Интернет Эксплорер.
Get-Process -Name iexplore
В формате по умолчанию для объектов Process отображаются свойства, показанные здесь:
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
32 25.52 10.25 13.11 12808 1 iexplore
52 11.46 26.46 3.55 21748 1 iexplore
Использование Format-Wide для вывода одного элемента
Командлет Format-Wide
по умолчанию отображает только свойство по умолчанию объекта. Сведения, связанные с каждым объектом, отображаются в одном столбце:
Get-Command -Verb Format | Format-Wide
Format-Custom Format-Hex
Format-List Format-Table
Format-Wide
Можно также указать свойство, отличное от по умолчанию:
Get-Command -Verb Format | Format-Wide -Property Noun
Custom Hex
List Table
Wide
Управление отображением Format-Wide с помощью столбца
С помощью командлета Format-Wide
можно одновременно отображать только одно свойство. Это позволяет отображать большие списки в нескольких столбцах.
Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom Hex List
Table Wide
Использование Format-List для представления списка
Командлет Format-List
отображает объект в виде перечисления, причем каждое свойство помечено и отображается в отдельной строке:
Get-Process -Name iexplore | Format-List
Id : 12808
Handles : 578
CPU : 13.140625
SI : 1
Name : iexplore
Id : 21748
Handles : 641
CPU : 3.59375
SI : 1
Name : iexplore
Можно указать столько свойств, сколько вы хотите:
Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime : 10/22/2019 11:23:58 AM
Id : 12808
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime : 10/22/2019 11:23:57 AM
Id : 21748
Получение подробных сведений с помощью Format-List с подстановочными знаками
Командлет Format-List
позволяет использовать подстановочный знак в качестве значения параметра свойства . Это позволяет отображать подробные сведения. Часто объекты содержат больше сведений, чем требуется, поэтому PowerShell не отображает все значения свойств по умолчанию. Чтобы отобразить все свойства объекта, используйте команду Format-List -Property *
. Следующая команда создает более 60 строк выходных данных для одного процесса:
Get-Process -Name iexplore | Format-List -Property *
Хотя команда Format-List
полезна для отображения подробных сведений, если требуется обзор выходных данных, включающих множество элементов, более простое табличное представление часто удобнее.
Использование Format-Table для табличных выходных данных
Если вы используете командлет Format-Table
без имен свойств, указанных для форматирования выходных данных команды Get-Process
, вы получите точно те же выходные данные, что и без командлета Format
. По умолчанию PowerShell отображает объекты process в табличном формате.
Get-Service -Name win* | Format-Table
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running WinHttpAutoProx... WinHTTP Web Proxy Auto-Discovery Se...
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Manag...
Примечание.
Get-Service
доступен только на платформах Windows.
Улучшение выходных данных Format-Table
Хотя табличное представление полезно для отображения большого количества сведений, может быть трудно интерпретировать, если отображение слишком узко для данных. В предыдущем примере выходные данные усечены. Если при выполнении команды Format-Table
задан параметр autoSize, PowerShell вычисляет ширину столбцов на основе отображаемых фактических данных. Это делает столбцы читаемыми.
Get-Service -Name win* | Format-Table -AutoSize
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Management)
Командлет Format-Table
может усечь данные, но усечка происходит только в конце экрана.
Свойствам, за исключением последнего из отображаемых, выделяется достаточно места для корректного отображения самого длинного элемента данных.
Get-Service -Name win* |
Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Name Status StartType DisplayName DependentServi
ces
---- ------ --------- ----------- --------------
WinDefend Running Automatic Windows Defender Antivirus Service {}
WinHttpAutoProxySvc Running Manual WinHTTP Web Proxy Auto-Discovery Service {NcaSvc, iphl…
Winmgmt Running Automatic Windows Management Instrumentation {vmms, TPHKLO…
WinRM Running Automatic Windows Remote Management (WS-Management) {}
Команда Format-Table
предполагает, что свойства перечислены в порядке важности. Командлет пытается полностью отобразить свойства, находящиеся ближе к началу. Если команда Format-Table
не может отображать все свойства, она удаляет некоторые столбцы из дисплея. Это поведение можно увидеть в предыдущем примере свойства зависимых служб.
Оформление Format-Table результатов в столбцах
Вы можете принудительно переносить длинные данные Format-Table
в своём отображаемом столбце, используя параметр Wrap. Использование параметра может не дать ожидаемого результата, так как он использует настройки по умолчанию, если вы также не укажете Автонастройка:
Get-Service -Name win* |
Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -Wrap
Name Status StartType DisplayName DependentServi
ces
---- ------ --------- ----------- --------------
WinDefend Running Automatic Windows Defender Antivirus Service {}
WinHttpAutoProxySvc Running Manual WinHTTP Web Proxy Auto-Discovery Service {NcaSvc,
iphlpsvc}
Winmgmt Running Automatic Windows Management Instrumentation {vmms,
TPHKLOAD,
SUService,
smstsmgr…}
WinRM Running Automatic Windows Remote Management (WS-Management) {}
Использование параметра Wrap само по себе не особо замедляет обработку. Однако использование AutoSize для форматирования рекурсивного списка файлов большой структуры каталогов может занять много времени и использовать много памяти перед отображением первых результатов.
Если вас не волнует нагрузка на систему, функция AutoSize хорошо работает с параметром Wrap. Начальные столбцы по-прежнему используют столько ширины, сколько необходимо для отображения элементов в одной строке, но окончательный столбец упаковывается при необходимости.
Примечание.
Некоторые столбцы могут не отображаться, если сначала указать самые широкие столбцы. Для получения наилучших результатов сначала укажите наименьшие элементы данных.
В следующем примере сначала мы указываем наиболее широкие свойства.
Get-Process -Name iexplore |
Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id
Даже при переносе последний столбец Id пропущен.
FileVersion Path Nam
e
----------- ---- ---
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE iex
plo
re
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files\Internet Explorer\iexplore.exe iex
plo
re
Упорядочение выходных данных таблицы
Другим полезным параметром для табличного элемента управления выходными данными является GroupBy. Более длинные табличные описания, в частности, могут быть трудно сравнить. Параметр GroupBy группирует выходные данные на основе значения свойства. Например, можно группировать службы по StartType для упрощения проверки, исключив значение StartType из списка свойств.
Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType
StartType: Automatic
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Managem…
StartType: Manual
Status Name DisplayName
------ ---- -----------
Running WinHttpAutoProxyS… WinHTTP Web Proxy Auto-Discovery Serv…
PowerShell