Главная > Powershell > Прерывание конвейера в Powershell

Прерывание конвейера в Powershell

Об одной интересной особенности поведения командлета Select-Object прочёл на днях, которой спешу поделиться.

Итак, допустим мы ищем какой-то файл в каталоге, и допустим он нам нужен только один раз (а он может попадаться ещё несколько раз в подкаталогах). Такая команда может выглядеть так:

Get-ChildItem C: -Recurse -Filter explorer.exe -ErrorAction SilentlyContinue |
    Select-Object -First 1

Несмотря на одинаковый синтаксис и результат, поведение команды будет отличаться в версиях Powershell до 3.0 и всех последующих (3.0 и выше).

В ранних версиях мы получим указанное количество экземпляров файлов (для данного примера – один), но перебираться будут все файлы до конца каталога.

Начиная с версии 3.0 команда будет остановлена после нахождения первого экземпляра, что в разы сокращает время выполнения команды. И действительно, зачем перебирать огромную коллекцию файлов, если мы уже нашли то, что искали 🙂

Реклама
Рубрики:Powershell Метки:
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: