вебисторий

Сортировка объектов в Windows PowerShell

PowerShellПоговорив о фильтрации объектов в прошлой статье, стоит развить тему и коснуться сортировки.

Собственно, сортировка важна для удобства работы с объектами не меньше фильтрации. Операция сортировки осуществляется командлетом Sort-Object. Для работы командлета необходимо указать свойство объектов, по которому они будут сортироваться. Результатом станет вывод объектов в определенной последовательности.

Продолжим наш пример со списком процессов.

Итак, напомню, что список процессов в PowerShell вызывается командлетом Get-Process. В прошлый раз мы фильтровали процессы по загрузке CPU. Теперь отсортируем их.

Get-Process | Sort-Object -Property cpu
Пример сортировки объектов в Windows PowerShell

Параметр -Property в командлете Sort-Object используется по умолчанию. Поэтому его можно не писать. Как видим, по умолчанию объекты сортируются от меньшего к большему. Если нужно отсортировать объекты в обратном направлении, то применяется параметр -Descending.

На самом деле, с сортировкой всё. Как видите, здесь нет абсолютно ничего сложного.

Теперь, зная про фильтрацию и сортировку, усложним наш конвейер. Сначала отфильтруем объекты, а потом отсортируем их. Пусть нас интересуют только процессы, на выполнение которых ушло больше 20, но меньше 50 секунд. Отсортируем их в обратном порядке.

Get-Process | Where-Object {($_.CPU -lt 50) -and ($_.CPU -gt 20)} | Sort-Object -Descending cpu

В данном примере конвейер состоит уже из трех командлетов, которые поочередно передают объекты друг другу. Таким образом, становится понятно, что скриптовый язык PowerShell позволяет создавать довольно сложные конструкции при написании сценариев.