Фильтрация объектов в Windows PowerShell

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

Собственно, возможность фильтрации это базис работы с объектами, поскольку никому бы не понравилось работать с огромными массами объектов.

Фильтрация объектов в PowerShell осуществляется при помощи командлета Where-Object. Данный командлет проверяет объекты в конвейере на соответствие определенном условию и передаёт их дальше по конвейеру только в случае соответствия условию.

Условие или условия проверки в командлете Where-Object это, по сути, блок сценария, заключенный в фигурные скобки { }. Блок сценария идет после имени командлета и принимает одно из двух логических значений: $True или $False.

Продолжим разбирать наш пример с процессами в операционной системе. Как мы знаем, список запущенных в операционной системе процессов вызывается командлетом Get-Process. Результат будет примерно таким:

Фильтрация объектов в Windows PowerShell
Результат работы командлета Get-Process

Давайте отсортируем процессы и выведем в консоли только те, что нагружают центральный процессор. Для этого обратим внимание на параметр CPU.

Здесь нужно сделать лирическое отступление, что параметр CPU в Windows PowerShell показывает не процентную нагрузку на центральный процессор (к чему мы привыкли в диспетчере задач), а время, которое процессор затратил на выполнение процесса, в секундах.

Хорошо. Давайте посмотрим на те процессы, на выполнение которых у процессора ушло больше 30 секунд. Для этого нам нужно соорудить конвейер следующего вида

Get-Process | Where-Object {$_.CPU -gt 30}
Фильтрация объектов в Windows PowerShell
Пример фильтрации объектов в Windows PowerShell

Теперь разберем синтаксис командлета Where-Object.

$_ это специальная переменная, которую PowerShell создаёт самостоятельно.

-gt это оператор сравнения, обозначающий «больше». Ниже список операторов сравнения.

Оператор Значение
-eq равно
-ne не равно
-lt меньше
-le меньше или равно
-gt больше
-ge больше или равно
-like сравнение на совпадение имен
-notlike сравнение на несовпадение имен
-contains содержит
-notcontains не содержит

Операторы сравнения могут быть соединены с помощью логических операторов.

Оператор Значение
-and И
-or ИЛИ
-not НЕ
! НЕ

При использовании логических операторов операторы сравнения желательно помещать в скобки. Например, фраза пять равно пяти и три равно трём будет выглядеть как (5 -eq 5) -and (3 -eq 3).

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

В следующий раз поговорим о сортировке объектов.

Добавить комментарий

Ваш адрес email не будет опубликован.