Заметки о Windows и других программных продуктах Microsoft...

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

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

Довольно часто требуется запросить какие-либо данные и вывести их в виде таблицы. PowerShell предоставляет для этого множество способов, некоторые из которых мы сегодня рассмотрим.

Для примера возьмем командлет Get-Process, который, будучи запущенным без параметров, возвращает все запущенные в системе процессы в виде готовой таблицы. Выведем с его помощью процессы, потребляющие наибольшее количество процессорного времени:

Get-Process | where {$_.CPU -gt 10000}

стандартный вывод в виде таблицы

 

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

Get-Process | where {$_.CPU -gt 10000} | sort CPU -Desc

вывод с сортировкой

 

По умолчанию Get-Process выводит определенный фиксированный набор столбцов. Давайте переопределим его и выведем только нужные нам столбцы, например процессорное время (CPU), идентификатор (ID) и имя (ProcessName) процесса:

Get-Process | where {$_.CPU -gt 10000} | sort CPU -Desc | ft CPU, ID, ProcessName -auto

выборочный вывод

 

Предположим, что нам нужно получить какие нибудь особые параметры, отсутствующие в стандартном выводе. Посмотреть имеющиеся параметры можно с помощью построчного вывода, например так мы выведем все свойства процесса lsass:

Get-Process lsass | fl *

вывод всех параметров

 

А теперь добавим в вывод описание процесса (Description):

Get-Process | where {$_.CPU -gt 10000} | sort CPU -Desc | ft CPU, ProcessName, Description -auto

вывод выбранных столбцов

 

Ну и если вас не устраивают стандартные параметры, можно создать свой собственный столбец. Для примера создадим столбец с именем «Process name» и поместим его в переменную:

$p = @(Expression={$_.Name}; Label = ″Process name″; width=30}

Здесь Expression — это выражение, которое определяет значение параметра, Label — название столбца, а width — его ширина.

Полученную переменную затем можно добавить в вывод как обычный параметр:

Get-Process | where {$_.CPU -gt 10000} | sort CPU -Desc | ft CPU, $P, Description -auto

создание собственного столбца

 

С помощью Expression можно производить практически любые преобразования. Например, требуется округлить процессорное время до целого числа, для чего воспользуемся статическим классом методом Round класса [math] :

$c = @(Expression={[math]::Round($_.CPU,0)}; Label = ″CPU time″}

И затем добавим полученное значение в таблицу:

Get-Process | where {$_.CPU -gt 10000} | sort CPU -Desc | ft $C, $P, Description -auto

расчет собственного столбца

 

Таким образом можно организовать вывод нужной информации в удобном для себя виде.

 
 
Комментарии

Пока нет комментариев.

Ответить