В прошлой статье мы разобрались, что же такое конвейеры в Windows PowerShell. Теперь поговорим о такой возможности, как фильтрация объектов.
Собственно, возможность фильтрации это базис работы с объектами, поскольку никому бы не понравилось работать с огромными массами объектов.
Фильтрация объектов в PowerShell осуществляется при помощи командлета Where-Object. Данный командлет проверяет объекты в конвейере на соответствие определенном условию и передаёт их дальше по конвейеру только в случае соответствия условию.
Условие или условия проверки в командлете Where-Object это, по сути, блок сценария, заключенный в фигурные скобки { }. Блок сценария идет после имени командлета и принимает одно из двух логических значений: $True или $False.
Продолжим разбирать наш пример с процессами в операционной системе. Как мы знаем, список запущенных в операционной системе процессов вызывается командлетом Get-Process. Результат будет примерно таким:
Давайте отсортируем процессы и выведем в консоли только те, что нагружают центральный процессор. Для этого обратим внимание на параметр CPU.
Здесь нужно сделать лирическое отступление, что параметр CPU в Windows PowerShell показывает не процентную нагрузку на центральный процессор (к чему мы привыкли в диспетчере задач), а время, которое процессор затратил на выполнение процесса, в секундах.
Хорошо. Давайте посмотрим на те процессы, на выполнение которых у процессора ушло больше 30 секунд. Для этого нам нужно соорудить конвейер следующего вида
Get-Process | Where-Object {$_.CPU -gt 30}
Теперь разберем синтаксис командлета 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. Фильтрация объектов в конвейере очень важна, поскольку зачастую далеко не со всем объектами подряд необходимо работать.
В следующий раз поговорим о сортировке объектов.
Статьи по теме: