Поделиться через


Использование команд форматирования для изменения представления выходных данных

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…