Функции, работающие с каналами, и фильтры

Оцените статью

windows712708 Функции, работающие с каналами, и фильтрыФункцию PowerShell можно вызвать в операторе, содержащем оператор канала, как показано в следующей команде: get-childitem | my_f unction. Функция должна быть написана особым образом, чтобы она могла исследовать каждый из объектов, переданных по каналу. Проще всего написать функцию, исследующую каждый из объектов, имеющихся в переменной $input, используя код, подобный этому: foreach ($obj in $input), чтобы поштучно передавать каждый полученный по каналу объект через переменную $obj. Но этот метод может работать слишком медленно, поскольку функция не будет вызываться, пока предыдущий командлет не завершит запись объектов в канал и не закончится создание массива $input. Есть более эффективный и передовой способ, в котором используются операторы BEGIN, PROCESS и END. PowerShell позволяет определять внутри функции три блока кода, которые предназначены для использования в канале: BEGIN позволяет инициализировать функцию, PROCESS вызывается по разу для каждого объекта, проходящего по каналу, a END позволяет заниматься любой необходимой подчисткой или подведением итогов. Используя этот метод, PowerShell может запускать любые связанные каналами командлеты и функции одновременно, чтобы каждый командлет или функция обрабатывали объекты по мере их прохождения через предыдущий элемент канала. Основная структура имеет следующий вид: function Имя_функции Эта функция вызывается только один раз, поэтому нужно обработать все ключи командной строки (передаваемые через список аргументов функции, а также массив $angs, который уже ранее упоминался) в блоке BEGIN. Затем блок PROCESS выполняется по разу для каждого объекта, переданного по каналу. Текущий объект содержится в переменной $_. И наконец, когда будут обработаны все объекты, PowerShell выполняет блок END. Любой из этих блоков может быть пропущен или не иметь операторов между фигурными скобками.

Комментирование закрыто.

Вверх страницы