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

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

Все остальные командлеты вывод не форматируют. Благодаря этому изучать средства и параметры форматирования для многих средств не нужно. Достаточно запомнить командлеты 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