Раздел: Tutorial

Форматирование данных в Powershell


Форматирование выводимой информации в PowerShell осуществляется следующими командлетами:

Format-Table
Format-List
Format-Wide
Format-Custom

В этой статье я расскажу о том, как их можно применять.

Если при выполнении какой-либо команды вы не указываете, как именно должна выводиться информация, то используется тип вывода по умолчанию, используемый для тех или иных данных. Например, командлеты Get-Process или Get-Service выведут данные в виде таблиц с несколькими столбцами.

Как видите, результат выполнения команды Get-Process представлен системой по умолчанию в виде таблицы. Чтобы изменить тип отображения данных, нужно указать тип форматирования явно, например, используем командлет Format-List. Этот командлет выводит данные об объекте как список его свойств:

Как видно из примера для того, чтобы использовать командлеты, управляющие форматированием выводимых данных, необходимо передать им по конвейеру результаты какой-либо команды. Передача данных по конвейеру осуществляется с помощью символа | , аналогично тому, как это делалось в командной строке cmd.

В данном случае, использование командлета Format-Table (без каких-либо дополнительных параметров) по отношению к командлету Get-Process ни к чему не приведёт, поскольку этот командлет и так выдаёт данные в виде таблицы. Однако, используя его, можно определить требуемые для вывода столбцы:

Параметр -AutoSize определяет ширину столбца автоматически — по содержимому.

Вернёмся к нашему примеру. В случае выполнения командлета Get-Process без форматирования данных, система по умолчанию выводит восемь атрибутов(т.е. столбцов) с данными(Handles, NPM(K), PM(K) WS(K), VM(M), CPU(s), ID, ProcessName). Если же использовать командлет Format-Table, то система по умолчанию выведет информацию о каждом процессе в виде только четырёх атрибутах(Id, Handles, CPU, Name). При использовании командлета форматирования выводимых данных, мы можем вручную указать, какие именно атрибуты необходимо отображать. Например:

Для вывода на экран мы указали такие параметры процессов, как ProcessName (имя процесса), ID (идентификатор процесса) и Company (компания-разработчик программы запущенного процесса). Не все атрибуты могут содержать данные. например, параметр Company. А вот такой атрибут как ID, как правило, не бывает пустым.

Для того, чтобы узнать, какие вообще свойства есть у данного объекта, чтобы например, вывести их на экран, нужно использовать команду Get-Member. Она так же работает с помощью конвейера:

Результатом выполнения данной команды будут не только свойства данных объектов (в данном случае, процессов), но и их методы, и прочая информация(см. столбец MemberType). Чуть позже я расскажу, как более удобно получить список свойств для данного объекта.

Командлет Format-Wide выводит данные об объекте в виде таблицы с одним параметром, в котором отображается только одно свойство объекта. Как правило, по умолчанию,  это параметр Name - имя объекта:

Для данного командлета можно указать другое выводимое свойство, а так же указать количество столбцов в выводимой таблице:

Командлет Format-Custom использует для вывода настроенное пользователем представление. Это представление должно хранится в отдельном файле с XML-структурой и расширением .ps1xml, который указывается так:

Get-service | Format-Custom -View C:MyView.ps1xml

Для обновления файла формата (его перезагрузки)используется команда Update-FormatData.

Комментировать

Комментарии

1 × три =