Przejdź do treści

Podstawy PowerShell: programowanie z pętlami

    1651882981

    W tym samouczku PowerShell pokazujemy, jak używać pętli For, pętli ForEach-Object oraz pętli While, Do-While i Do-Until.

    Pętle PowerShell, w swojej najbardziej podstawowej wersji, po prostu powtarzają ten sam zestaw poleceń określoną liczbę razy. Idealne do wykonywania spójnych działań przez określony czas lub określoną liczbę rekordów, pętle mogą w dużym stopniu uprościć skrypty. W szczególności PowerShell zawiera szereg poleceń cmdlet — zwłaszcza tych, które zaczynają się od czasownika Get — które zwracają obiekty zawierające dużą liczbę podobnych danych.

    W PowerShell dostępnych jest kilka rodzajów pętli, aw wielu przypadkach można efektywnie wykorzystać więcej niż jedną technikę pętli. Czasami wymagane jest określenie najbardziej wydajnego typu pętli, z perspektywy wydajności lub czytelności kodu.

    Pętla dla każdego obiektu

    W wielu przypadkach użycie polecenia cmdlet ForEach-Object (omówionego wcześniej w naszym artykule na temat pracy z obiektami PowerShell) jest najlepszym sposobem na pętlę przez obiekt. Najprościej mówiąc, ForEach-Object wymaga jedynie pętli obiektu i bloku skryptu zawierającego polecenia do wykonania na każdym elemencie obiektu.

    Te parametry można określić za pomocą nazw parametrów -InputObject i -Process lub przez potok obiektu do polecenia cmdlet ForEach-Object i umieszczenie bloku skryptu jako pierwszego parametru. Aby zilustrować tę podstawową składnię, poniższy przykład pokazuje dwie metody używania ForEach-Object do przeglądania zawartości folderu Dokumenty użytkownika:

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

    W niektórych scenariuszach może być korzystne wykonanie jednej lub więcej akcji tuż przed lub tuż po wykonaniu pętli. Parametry -Begin i -End mogą służyć do definiowania bloków skryptu do wykonania tuż przed lub po zawartości bloku skryptu -Process. Może to służyć do ustawiania lub modyfikowania zmiennej przed lub po wykonaniu pętli.

    ForEach-Object ma dwa aliasy, ForEach i %, a także obsługuje skróconą składnię rozpoczynającą się w PowerShell 3.0. Poniższe trzy przykłady są identyczne pod względem funkcji.

    Get-WMIObject Win32_LogicalDisk | ForEach-Object {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | % Wolna przestrzeń

    PowerShell dla pętli

    Pętle For są zwykle używane do iteracji zestawu poleceń określoną liczbę razy, aby przejść przez tablicę lub obiekt, albo po prostu powtórzyć ten sam blok kodu w razie potrzeby. Pętla For jest tworzona przez ustawienie wartości zmiennej podczas wchodzenia do pętli, warunku, w którym pętla powinna zostać zakończona, oraz akcji, która ma być wykonywana na tej zmiennej za każdym razem, gdy przechodzi przez pętlę.

    Poniższy przykład pokazuje podstawową pętlę For służącą do tworzenia tabliczki mnożenia:

    For ($i=0; $i -le 10; $i++) { „10 * $i = ” + (10 * $i) }

    Pętle For mogą służyć do przechodzenia przez wartości tablicy, ustawiając wartość początkową na początkowy indeks tablicy i stopniowo zwiększając wartość, aż do osiągnięcia długości tablicy. Indeks tablicy jest określony przez umieszczenie zmiennej inkrementowanej w nawiasach kwadratowych bezpośrednio po nazwie zmiennej, jak pokazano w poniższym przykładzie:

    $kolory = @(„Czerwony”,”Pomarańczowy”,”Żółty”,”Zielony”,”Niebieski”,”Indygo”,”Fioletowy”) Dla ($i=0; $i -lt $kolorów.Długość; $ i++) { $kolory[$i] }

    Pętle while, Do-While i Do-Until

    Trzeci typ pętli, który obsługuje PowerShell, polega na ustawieniu warunku, który umożliwia przetwarzanie pętli, o ile warunek jest prawdziwy lub dopóki nie zostanie spełniony. Pętle while i Do-While są używane do wykonania akcji, podczas gdy warunek ma wartość $true i różnią się tylko składnią. Pętle Do-Until mają podobną składnię do Do-While, ale zatrzymują przetwarzanie po spełnieniu instrukcji warunku.

    Obie pętle Do-While i Do-Until zaczynają się od słowa kluczowego Do poprzedzającego blok skryptu, po którym następuje słowo kluczowe warunku (Podczas lub Do) i warunek. Na przykład następujące dwie pętle działają identycznie, tylko warunek jest odwrócony:

    $i=1 Wykonaj { $i $i++ } Dopóki ($i -le 10)$i=1 Wykonaj { $i $i++ } Do ($i -gt 10)

    Podczas gdy pętle działają identycznie jak pętle Do-While, tylko składnia jest nieznacznie zmieniana. Pętle while używają tylko słowa kluczowego While, po którym następuje warunek, a na końcu blok skryptu. Ta pętla działa identycznie jak w poprzednich przykładach i używa tego samego warunku, co pętla Do-While:

    $i=1 Chociaż ($i -le 10) { $i $i++ }

    Każdy z tych trzech typów pętli — Do-While, Do-Until i While — może być również użyty do zapętlenia w nieskończoność; Pętle While i Do-While z warunkiem ustawionym na $true oraz Do-Until z warunkiem ustawionym na $false.

    W niektórych sytuacjach może być konieczne wcześniejsze zakończenie pętli w oparciu o coś innego niż warunek pętli. W takim przypadku słowo kluczowe Break może zostać wywołane w celu wyjścia z pętli. Ten ostatni przykład pokazuje tę samą funkcjonalność, ale używa nieskończonej pętli i słowa kluczowego Break, aby wyjść w odpowiednim momencie:

    $i=1 While ($true) { $i $i++ if ($i -gt 10) { Break } }

    ZWIĄZANE Z:

    Operatory porównania PowerShell i logika warunkowa
    PowerShell: używanie zmiennych, tablic i tablic mieszających
    Podstawy PowerShell: zarządzanie plikami i folderami

    0 0 votes
    Rating post
    Subscribe
    Powiadom o
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x