Powershell — Where, Where-Object, ?

PowerShellPowershell — Where, Where-Object позволяют проводить сложную фильтрацию на поиск чего-либо. В этой статье мы не будем затрагивать другие фильтры и разберем их в следующих статьях. А сегодня разберемся с Where и Where-Object.

Powershell — Where

Результат выполнения любого командлета в Powershell — это объект. И чаще всего при выводе он не один, а целый массив. Для фильтрации только определенных объектов используется Where. Where — это командлет стандартной фильтрации в Powershell. Он позволяет отфильтровать вывод на экран, используя конвейер. К слову Where является алиасом командлета Where-Object. Так алиасом является и знак вопроса.

Конвейер уже неоднократно появлялся в наших статьях. Если вы хотите хотите отдельную статью для него — пишите коммент!

На самом деле использование Where достаточно просто. Вы пишите сначала командлет, который что-то должен вывести, а потом пишите фильтр с помощью Where для него. Выглядит это так:

Как видно на примере вывелись сервисы, у которых статус эквивалентен «Running».

Еще один пример позволяет фильтровать файлы и папки с помощью оператора like:

В целом, думаю понятно как это теперь работает.

Where-Object

В данном случае ситуация обстоит немного сложнее, но и возможностей фильтрации здесь гораздо шире. Where-Object позволяет использовать так называемый FilterScript. Параметр позиционный и не обязателен для указания, но его возможности впечатляют. В недавней статье про перезапуск процесса в FilterScript используется фильтр Name. Давайте еще раз рассмотрим его:

Таким образом можно фильтровать весьма точечно то, что вам нужно.

Знак ?

Так как знак вопроса так же является алиасом фильтра Where-Object, я просто приведу пример его использования и включим в фильтр $PSItem:

К слову переменная $_ является основной, в то время как $PSItem всего лишь аналог. Это нужно знать, возможно $PSItem вам будет удобней, но функциональной разницы между переменными нет.

Итог:

Where-Object является очень мощным инструментом фильтрации в Powershell. Имена сервисов можно находить зная лишь путь до exe-шника. Таким образом можно получить любую информацию о нужном вам файле, папке или сервисе. Достаточно правильно задать фильтр и результат в консоли вас приятно удивит. Если у вас остались вопросы, обязательно пишите их в комментариях. Спасибо за внимание, надеемся, что статья была полезной для вас! Подписывайтесь на нашу группу в ВК, а так же не забывайте про канал на youtube!

Лицензионное соглашение

Авторские права публикуемых материалов полностью или частично принадлежат авторам сайта Pechenek.NET в соответствии со статьями 1252 и 1301 ГК РФ. Любое распространение должно быть согласовано с автором материала или с указанием ссылки на первоисточник.