В традиционных оболочках команды и средства сами форматируют выводимые данные. Некоторые средства позволяют настроить формат вывода с помощью специальных параметров.
В оболочке 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