Для сортировки в Powershell есть командлет Sort-Object. Мы можем отсортировать любой вывод команд, в том числе массивы, хэш таблицы и по датам. Каждый вариант мы рассмотрим на примерах.
По умолчанию командлет сортирует по возрастанию (ASC). На примере ниже я получил данные по отклику процессора:
Get-Process | Sort-Object -Property CPU
Ключ Property допускает использование нескольких значений.
Если нам нужно выполнить сортировку по убыванию (DESC), то для этого есть следующий ключ:
Get-Service | Sort-Object -Descending -Property "Name"
Если у нас не указан ключ Descending, то у нас будет такая последовательность вывода:
- Числа
- Буквы английского алфавита
- Буквы русского алфавита
Сортировка массивов и дат в Powershell Sort-Object
На самом деле любой объект сортируется аналогично предыдущим примерам. Если мы собираемся выполнить в Powershell сортировку по дате нужно убедиться, что нужное свойство имеет формат Datetime.
Get-ChildItem -File | Get-Member -MemberType "Property"
Get-ChildItem -File | Sort-Object -Property "LastWriteTime"
Бывает так, что дата формата INT (численный) или STR (строковый) и если вы не хотите сортировать как числа или строки, то их нужно преобразовать. Для примера так я отсортирую по типу данных datetime преобразовав число:
Get-ADComputer -Filter * -Properties lastLogon | Sort-Object {Get-Date $_.lastLogon}
Рекомендую почитать другие примеры работы с датой в Powershell.
Как переименовывать папки в Powershell
Пример с сортировкой массива:
$a = 'z','s','f'
$a | Sort-Object -Descending
Хэш таблцицы сортируются так же.
Дополнительные параметры сортировки в Powershell
Хоть это и мало относится к сортировке, то у нас есть возможность получить уникальные значения в выводе:
Get-Service | Sort-Object -Unique Status
Для сортировки с учетом регистра букв есть ключ CaseSensitive, но он похоже не работает ( как минимум в PS 5.1 ).
Другие примеры использования команд можно увидеть так:
Get-Help Sort-Object -Examples
Если нужно увидеть другие ключи:
Get-Command Sort-Object -Syntax
...
Подписывайтесь на наш Telegram канал
Теги: #powershell