![]()
Собственно, возможность фильтрации это базис работы с объектами, поскольку никому бы не понравилось работать с огромными массами объектов.
Фильтрация объектов в 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. Фильтрация объектов в конвейере очень важна, поскольку зачастую далеко не со всем объектами подряд необходимо работать.
В следующий раз поговорим о сортировке объектов.