В традиционных оболочках команды и средства сами форматируют выводимые данные. Некоторые средства позволяют настроить формат вывода с помощью специальных параметров.

В оболочке Windows PowerShell вывод форматируют только командлеты форматирования:

  • Format-List

  • Format-Custom

  • Format-Table

  • Format-Wide

Все остальные командлеты вывод не форматируют. Благодаря этому изучать средства и параметры форматирования для многих средств не нужно. Достаточно запомнить командлеты Format и их параметры.

При выполнении команды Windows PowerShell вызывает модуль форматирования по умолчанию, который определяется по типу отображаемых данных. Этот модуль определяет, какие свойства вывода отображаются и в каком формате: списка или таблицы.

Например, при использовании командлета Get-Service данные по умолчанию выводятся как таблица с тремя столбцами, например:

C:\PS> get-service
Status   Name               DisplayName
------   ----               -----------
Running  AdtAgent           Event Forwarder
Stopped  Alerter            Alerter
Running  ALG                Application Layer Gateway Service

Чтобы изменить формат данных, выводимых любым командлетом, направьте их с помощью оператора конвейерной обработки (|) командлету Format.

Например, следующая команда отправляет результат команды Get-Service в командлет Format-List. В результате данные о каждой службе форматируются как список.

C:\PS> get-service | format-list
Name                : AdtAgent
DisplayName         : Event Forwarder
Status              : Running
DependentServices   : {}
ServicesDependedOn  : {eventlog, dnscache}
CanPauseAndContinue : False
CanShutdown         : True
CanStop             : True
ServiceType         : Win32OwnProcess

Name                : Alerter
DisplayName         : Alerter
Status              : Stopped
DependentServices   : {}
ServicesDependedOn  : {LanmanWorkstation}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
ServiceType         : Win32ShareProcess

Name                : ALG
DisplayName         : Application Layer Gateway Service
Status              : Running
DependentServices   : {}

При использовании формата списка выводится больше сведений о каждой службе, чем в формате таблицы. Вместо трех столбцов данных о каждой службе в формате списка выводятся девять строк данных. Командлет Format-List не извлек дополнительную информацию о службах. Эти данные содержались в объектах, возвращенных командлетом Get-Service, однако командлет Format-Table, используемый по умолчанию, отбросил их, потому что не смог вывести на экран более трех столбцов.

При отображении данных можно указать не только формат их вывода (список или таблица), но и свойства объекта, которые должны быть отображены. Например, командлет Get-Service по умолчанию отображает только свойства Status, Name и DisplayName объекта-службы.

Чтобы просмотреть все свойства объекта, нужно направить вывод команды командлету Get-Member с помощью оператора конвейерной обработки (|). Например, чтобы просмотреть все свойства объекта-службы, введите следующую команду:

get-service | get-member -membertype *property

   TypeName: System.ServiceProcess.ServiceController

Name                MemberType    Definition
----                ----------    ----------
Name                AliasProperty Name = ServiceName
CanPauseAndContinue Property      System.Boolean CanPauseAndContinue {get;}
CanShutdown         Property      System.Boolean CanShutdown {get;}
CanStop             Property      System.Boolean CanStop {get;}
Container           Property      System.ComponentModel.IContainer Container {get;}
DependentServices   Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName         Property      System.String DisplayName {get;set;}
MachineName         Property      System.String MachineName {get;set;}
ServiceHandle       Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName         Property      System.String ServiceName {get;set;}
ServicesDependedOn  Property      System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType         Property      System.ServiceProcess.ServiceType ServiceType {get;}
Site                Property      System.ComponentModel.ISite Site {get;set;}
Status              Property      System.ServiceProcess.ServiceControllerStatus Status {get;}

Все эти свойства входят в состав объекта, возвращаемого командлетом Get-Service для каждой службы, и можно отобразить любые из них или все. Для выбора отображаемых свойств и порядка отображения используйте параметр Property командлетов Format. В следующем примере команда Format-Table отображает только свойства Name, ServiceType и CanShutDown службы.

get-service | format-table name, Servicetype, Canshutdown

Это далеко не все, что можно делать с данными, выводимыми оболочкой Windows PowerShell. Чтобы получить дополнительные сведения о командлетах Format, используйте следующие команды:

get-help format-list
get-help format-table
get-help format-wide
get-help format-custom




Содержание