Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Фильтрация объектов в конвейере
В PowerShell поддерживается возможность фильтрации объектов в конвейере, т.е. удаление из конвейера объектов, не удовлетворяющих определенному условию. Эту функцию обеспечивает командлет Where-Object, позволяющий проверить каждый объект, находящийся в конвейере, и передать его дальше по конвейеру, только если объект удовлетворяет условиям проверки. Например, для вывода информации о "зависших" процессах (объекты, возвращаемые командлетом Get-Process, у которых свойство Responding равно False) можно использовать следующий конвейер: Get-Process | Where-Object {-not $_.Responding}Другой пример – оставим в конвейере только те процессы, у которых значение идентификатора (свойство Id) больше 2000 (рис. 9): Рис. 9. Результат выполнения командлета Get-Process | Where-Object {$_.Id -gt 2000}
В блоках сценариев командлета Where-Object для обращения к текущему объекту конвейера и извлечения нужных свойств этого объекта используется специальная переменная$_, которая создается оболочкой PowerShell автоматически. Данная переменная используется и в других командлетах, производящих обработку элементов конвейера. Условие проверки в Where-Object задается в виде блока сценария – одной или нескольких команд PowerShell, заключенных в фигурные скобки{}. Результатом выполнения данного блока сценария должно быть значение логического типа: True (истина) или False (ложь). Как можно понять из примеров, в блоке сценария используются специальные операторы сравнения.
Примечание.В PowerShell для операторов сравнения не используются обычные символы > или <, так как в командной строке они обычно означают перенаправление ввода/вывода. Основные операторы сравнения приведены в табл. 1.
Таблица 1.Операторы сравнения в PowerShell
Операторы сравнения можно соединять друг с другом с помощью логических операторов (табл.2).
Таблица 2.Логические операторы в PowerShell
Сортировка объектов Еще одна операция, которая часто применяется при конвейерной обработке объектов - сортировка элементов конвейера. Данную операцию осуществляет командлет Sort-Object: ему передаются имена свойств, по которым нужно произвести сортировку, а он возвращает данные, упорядоченные по значениям этих свойств. Например, для вывода списка запущенных в системе процессов, упорядоченного по затраченному процессорному времени (свойство cpu), можно воспользоваться следующим конвейером: PS C:\>Get-Process | Sort-Object cpuДля сортировки в обратном порядке используется параметр Descending: PS C:\>Get-Process | Sort-Object cpu -DescendingВ рассмотренных нами примерах конвейеры состояли из двух командлетов. Это не обязательное условие, конвейер может объединять и большее количество команд, например: Get-Process | Where-Object {$_.Id -gt 2000} | Sort-Objectcpu –Descending 1.9.5. Использование переменныхВ переменных хранятся все возможные значения, даже если они являются объектами. Имена переменных в PowerShell всегда должны начинаться с символа «$». Можно сохранить список процессов в переменной, это позволит в любое время получать доступ к списку процессов. Значение переменной присваивается оператором =, например: $a = Get-process | Sort-ObjectcpuВывести содержимое переменной можно, просто напечатав в командной строке $a(рис.10).
Рис. 10. Вывод значения переменной $a
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-06-01; просмотров: 245. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |