Фильтрация объектов в конвейере
В PowerShell поддерживается возможность фильтрации объектов в конвейере, т.е. удаление из конвейера объектов, не удовлетворяющих определенному условию. Данную функциональность обеспечивает командлет Where-Object, позволяющий проверить каждый объект, находящийся в конвейере, и передать его дальше по конвейеру, только если объект удовлетворяет условиям проверки.
Например, для вывода информации о "зависших" процессах (объекты, возвращаемые командлетом Get-Process, у которых свойство Responding равно False ) можно использовать следующий конвейер:
Get-Process | Where-Object {-not $_.Responding}
Другой пример – оставим в конвейере только те процессы, у которых значение идентификатора (свойство Id ) больше 1000:
Get-Process | Where-Object {$_.Id -gt 1000}
В блоках сценариев командлета Where-Object для обращения к текущему объекту конвейера и извлечения нужных свойств этого объекта используется специальная переменная $_, которая создается оболочкой PowerShell автоматически. Данная переменная используется и в других командлетах, производящих обработку элементов конвейера.
Условие проверки в Where-Object задается в виде блока сценария – одной или нескольких команд PowerShell, заключенных в фигурные скобки {}. Результатом выполнения данного блока сценария должно быть значение логического типа: True (истина) или False (ложь). Как можно понять из примеров, в блоке сценария используются специальные операторы сравнения.
Замечание
В PowerShell для операторов сравнения не используются обычные символы > или <, так как в командной строке они обычно означают перенаправление ввода/вывода.
Основные операторы сравнения приведены в табл. 17.1.
Таблица 17.1. Операторы сравнения в PowerShell | ||
Оператор | Значение | Пример (возвращается значение True) |
-eq | равно | 10 -eq 10 |
-ne | не равно | 9 -ne 10 |
-lt | меньше | 3 -lt 4 |
-le | меньше или равно | 3 –le 4 |
-gt | больше | 4 -gt 3 |
-ge | больше или равно | 4 -ge 3 |
-like | сравнение на совпадение с учетом подстановочного знака в тексте | "file.doc" –like "f*.doc" |
-notlike | сравнение на несовпадение с учетом подстановочного знака в тексте | "file.doc" –notlike "f*.rtf" |
-contains | содержит | 1,2,3 –contains 1 |
-notcontains | не содержит | 1,2,3 –notcontains 4 |
Операторы сравнения можно соединять друг с другом с помощью логических операторов (см. табл. 17.2).
Таблица 17.2. Логически операторы в PowerShell | ||
Оператор | Значение | Пример (возвращается значение True) |
-and | логическое И | (10 -eq 10) –and (1 –eq 1) |
-or | логическое ИЛИ | (9 -ne 10) –or (3 –eq 4) |
-not | логическое НЕ | -not (3 –gt 4) |
! | логическое НЕ | !(3 -gt 4) |
Дата добавления: 2018-03-01; просмотров: 328;