Zum Inhalt springen

PowerShell-Grundlagen: Programmieren mit Schleifen

    1651882981

    In diesem PowerShell-Tutorial zeigen wir Ihnen, wie Sie die For-Schleife, die ForEach-Object-Schleife und die While-, Do-While- und Do-Until-Schleifen verwenden.

    PowerShell-Schleifen wiederholen im einfachsten Fall einfach denselben Satz von Befehlen eine festgelegte Anzahl von Malen. Schleifen sind ideal, um konsistente Aktionen für einen festgelegten Zeitraum oder eine bestimmte Anzahl von Datensätzen auszuführen, und können Ihre Skripte erheblich vereinfachen. Insbesondere PowerShell verfügt über eine Reihe von Cmdlets – insbesondere solche, die mit dem Verb „Get“ beginnen – die Objekte zurückgeben, die eine große Anzahl ähnlicher Daten enthalten.

    In PowerShell sind mehrere Arten von Schleifen verfügbar, und in vielen Fällen kann mehr als eine Schleifentechnik effektiv verwendet werden. Manchmal ist es erforderlich, den effizientesten Schleifentyp zu bestimmen, entweder aus Sicht der Leistung oder der Lesbarkeit des Codes.

    ForEach-Object-Schleife

    In vielen Fällen ist die Verwendung des ForEach-Object-Cmdlets (zuvor in unserem Artikel zum Arbeiten mit PowerShell-Objekten erläutert) die beste Möglichkeit, ein Objekt zu durchlaufen. Im einfachsten Fall benötigt ForEach-Object nur ein Objekt, das durchlaufen werden muss, und einen Skriptblock, der die Befehle enthält, die für jedes Mitglied des Objekts ausgeführt werden sollen.

    Diese Parameter können entweder durch die Parameternamen „-InputObject“ und „-Process“ oder durch Weiterleitung des Objekts an das Cmdlet „ForEach-Object“ und Platzieren des Skriptblocks als ersten Parameter angegeben werden. Um diese grundlegende Syntax zu veranschaulichen, zeigt das folgende Beispiel zwei Methoden zur Verwendung von ForEach-Object, um den Inhalt des Ordners „Dokumente“ eines Benutzers zu durchlaufen:

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

    In bestimmten Szenarios kann es vorteilhaft sein, eine oder mehrere Aktionen unmittelbar vor oder unmittelbar nach der Ausführung der Schleife auszuführen. Die Parameter -Begin und -End können verwendet werden, um Skriptblöcke zu definieren, die direkt vor oder nach dem Inhalt des Skriptblocks -Process ausgeführt werden. Dies kann verwendet werden, um eine Variable vor oder nach der Ausführung der Schleife zu setzen oder zu ändern.

    ForEach-Object hat zwei Aliase, ForEach und %, und unterstützt ab PowerShell 3.0 auch die Kurzschriftsyntax. Die folgenden drei Beispiele sind in der Funktion identisch.

    Get-WMIObject Win32_LogicalDisk | ForEach-Object {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | % Freiraum

    PowerShell For-Schleife

    For-Schleifen werden normalerweise verwendet, um eine Reihe von Befehlen eine bestimmte Anzahl von Malen zu durchlaufen, entweder um ein Array oder Objekt schrittweise zu durchlaufen, oder einfach um denselben Codeblock nach Bedarf zu wiederholen. Eine For-Schleife wird konstruiert, indem der Wert einer Variablen beim Eintritt in die Schleife, die Bedingung, unter der die Schleife beendet werden soll, und eine Aktion, die für diese Variable bei jedem Durchlaufen der Schleife ausgeführt werden soll, festgelegt werden.

    Das folgende Beispiel zeigt eine einfache For-Schleife, die zum Erstellen einer Multiplikationstabelle verwendet wird:

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

    For-Schleifen können verwendet werden, um Array-Werte schrittweise zu durchlaufen, indem der Anfangswert auf den Anfangsindex des Arrays gesetzt und der Wert inkrementell erhöht wird, bis die Array-Länge erreicht ist. Der Array-Index wird angegeben, indem die inkrementierte Variable direkt nach dem Variablennamen in eckige Klammern gesetzt wird, wie im folgenden Beispiel gezeigt:

    $colors = @(„Rot“,“Orange“,“Gelb“,“Grün“,“Blau“,“Indigo“,“Violett“) For ($i=0; $i -lt $colors.Length; $ i++) { $farben[$i] }

    While-, Do-While- und Do-Until-Schleifen

    Ein dritter Schleifentyp, der von PowerShell unterstützt wird, umfasst das Festlegen einer Bedingung, die entweder die Verarbeitung der Schleife zulässt, solange die Bedingung wahr ist oder bis sie erfüllt ist. While- und Do-While-Schleifen werden beide verwendet, um eine Aktion auszuführen, während die Bedingung zu $true ausgewertet wird, und unterscheiden sich nur in ihrer Syntax. Do-Until-Schleifen haben eine ähnliche Syntax wie Do-While, stoppen jedoch die Verarbeitung, sobald die Bedingungsanweisung erfüllt ist.

    Do-While- und Do-Until-Schleifen beginnen beide mit dem Do-Schlüsselwort, das einem Skriptblock vorangestellt ist, gefolgt vom Bedingungsschlüsselwort (While oder Until) und der Bedingung. Als Beispiel funktionieren die folgenden zwei Schleifen identisch, nur die Bedingung ist umgekehrt:

    $i=1 Do { $i $i++ } While ($i -le 10)$i=1 Do { $i $i++ } Bis ($i -gt 10)

    Schleifen funktionieren zwar genauso wie Do-While-Schleifen, nur die Syntax wird geringfügig geändert. While-Schleifen verwenden nur das While-Schlüsselwort, gefolgt von der Bedingung und schließlich dem Skriptblock. Diese Schleife ist in ihrer Funktion identisch mit den vorherigen Beispielen und verwendet dieselbe Bedingung wie die Do-While-Schleife:

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

    Jeder dieser drei Schleifentypen – Do-While-, Do-Until- und While-Schleifen – kann auch für Endlosschleifen verwendet werden; While- und Do-While-Schleifen mit auf $true gesetzter Bedingung und Do-Until mit auf $false gesetzter Bedingung.

    In einigen Situationen müssen Sie eine Schleife möglicherweise aufgrund von etwas anderem als der Schleifenbedingung vorzeitig verlassen. In diesem Fall kann das Schlüsselwort Break aufgerufen werden, um die Schleife zu verlassen. Dieses letzte Beispiel zeigt dieselbe Funktionalität, verwendet jedoch eine Endlosschleife und das Break-Schlüsselwort, um zum richtigen Zeitpunkt auszusteigen:

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

    VERBUNDEN:

    PowerShell-Vergleichsoperatoren und bedingte Logik
    PowerShell: Verwenden von Variablen, Arrays und Hashtables
    PowerShell-Grundlagen: Verwalten von Dateien und Ordnern

    0 0 votes
    Rating post
    Abonnieren
    Benachrichtige mich bei
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x