Перейти до вмісту

Основи 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 -Файл $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, який використовується для створення таблиці множення:

    Для ($i=0; $i -le 10; $i++) { “10 * $i = ” + (10 * $i) }

    Цикли For можна використовувати для переходу між значеннями масиву, встановлюючи початкове значення на початковий індекс масиву та поступово збільшуючи значення, доки не буде досягнута довжина масиву. Індекс масиву вказується шляхом розміщення збільшеної змінної в квадратних дужках безпосередньо після імені змінної, як показано в наступному прикладі:

    $colors = @(“Червоний”,”Помаранчевий”,”Жовтий”,”Зелений”,”Синій”,”Індиго”,”Фіолетовий”) Для ($i=0; $i -lt $colors.Length; $ i++) { $colors[$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 — також можна використовувати для невизначеного циклу; Поки і 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