Перейти к содержимому

Основы PowerShell: программирование с помощью циклов

    1651882981

    В этом руководстве по PowerShell мы покажем вам, как использовать цикл For, цикл ForEach-Object, а также циклы While, Do-While и Do-Until.

    Циклы PowerShell, по сути, просто повторяют один и тот же набор команд определенное количество раз. Идеально подходящие для выполнения последовательных действий в течение заданного периода времени или определенного количества записей, циклы могут значительно упростить ваши сценарии. В PowerShell, в частности, имеется ряд командлетов, особенно тех, которые начинаются с глагола Get, которые возвращают объекты, содержащие большое количество похожих данных.

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

    Цикл ForEach-Object

    Во многих случаях использование командлета ForEach-Object (ранее обсуждалось в нашей статье о работе с объектами PowerShell) является лучшим способом циклического просмотра объекта. В самом простом случае ForEach-Object требует только объекта, через который должен проходить цикл, и блока скрипта, содержащего команды, которые должны выполняться для каждого члена объекта.

    Эти параметры можно указать либо с помощью имен параметров -InputObject и -Process, либо путем передачи объекта в командлет ForEach-Object и размещения блока скрипта в качестве первого параметра. Чтобы проиллюстрировать этот базовый синтаксис, в следующем примере показаны два метода использования ForEach-Object для циклического просмотра содержимого пользовательской папки Documents:

    $myDocuments = Get-ChildItem $env:USERPROFILEDocuments -File $myDocuments | ForEach-Object {$_.FullName} ForEach-Object -InputObject $myDocuments -Process {$_.FullName}

    В некоторых сценариях может быть полезно выполнить одно или несколько действий непосредственно перед или сразу после выполнения цикла. Параметры -Begin и -End могут использоваться для определения блоков сценария, которые должны выполняться непосредственно перед или после содержимого блока сценария -Process. Это можно использовать для установки или изменения переменной до или после выполнения цикла.

    ForEach-Object имеет два псевдонима, ForEach и %, а также поддерживает сокращенный синтаксис, начиная с PowerShell 3.0. Следующие три примера идентичны по функциям.

    Get-WMIObject Win32_LogicalDisk | ForEach-Object {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | % Свободное место

    PowerShell для цикла

    Циклы for обычно используются для повторения набора команд заданное количество раз, либо для пошагового прохождения массива или объекта, либо просто для повторения одного и того же блока кода по мере необходимости. Цикл For строится путем установки значения переменной при входе в цикл, условия, при котором цикл должен быть завершен, и действия, которое должно выполняться с этой переменной каждый раз в цикле.

    В следующем примере показан базовый цикл For, используемый для создания таблицы умножения:

    For ($i=0; $i -le 10; $i++) { «10 * $i = » + (10 * $i)}

    Циклы for можно использовать для пошагового прохождения значений массива, устанавливая начальное значение в начальный индекс массива и постепенно увеличивая значение до тех пор, пока не будет достигнута длина массива. Индекс массива указывается путем помещения переменной с приращением в квадратные скобки сразу после имени переменной, как показано в следующем примере:

    $colors = @(«Красный»,»Оранжевый»,»Желтый»,»Зеленый»,»Синий»,»Индиго»,»Фиолетовый») For ($i=0; $i -lt $colors.Length; $ я++) {$цвета[$i]}

    Циклы While, Do-While и Do-Until

    Третий тип цикла, который поддерживает PowerShell, включает установку условия, которое либо позволяет циклу работать, пока условие истинно, либо пока оно не будет выполнено. Циклы While и Do-While используются для выполнения действия, пока условие оценивается как $true, и отличаются только своим синтаксисом. Циклы Do-Until имеют синтаксис, аналогичный Do-While, но прекращают обработку после выполнения оператора условия.

    Циклы Do-While и Do-Until начинаются с ключевого слова Do, предшествующего блоку скрипта, за которым следует ключевое слово условия (While или Until) и условие. Например, следующие два цикла функционируют одинаково, только условия меняются местами:

    $i=1 Делать { $i $i++} Пока ($i -le 10)$i=1 Делать { $i $i++ } До ($i -gt 10)

    Хотя циклы работают так же, как циклы Do-While, только немного изменен синтаксис. Циклы while используют только ключевое слово While, за которым следует условие и, наконец, блок скрипта. Этот цикл по функциям идентичен предыдущим примерам и использует то же условие, что и цикл Do-While:

    $i=1 Пока ($i -le 10) { $i $i++ }

    Любой из этих трех типов циклов — Do-While, Do-Until и While — также может использоваться для бесконечного цикла; Циклы while и Do-While с условием, установленным в $true, и Do-Until с условием, установленным в $false.

    В некоторых ситуациях вам может потребоваться преждевременный выход из цикла на основе чего-то другого, кроме условия цикла. В этом случае можно вызвать ключевое слово Break, чтобы выйти из цикла. Этот последний пример демонстрирует ту же функциональность, но использует бесконечный цикл и ключевое слово Break для выхода в нужное время:

    $i=1 Пока ($true) { $i $i++ if ($i -gt 10) { Break } }

    СВЯЗАННЫЙ:

    Операторы сравнения PowerShell и условная логика
    PowerShell: использование переменных, массивов и хэш-таблиц
    Основы PowerShell: управление файлами и папками

    0 0 голоса
    Rating post
    Подписаться
    Уведомить о
    guest
    0 comments
    Межтекстовые Отзывы
    Посмотреть все комментарии
    0
    Оставьте комментарий! Напишите, что думаете по поводу статьи.x