Looking for powershell Answers? Try Ask4KnowledgeBase
Looking for powershell Keywords? Try Ask4Keywords

PowerShellSchleifen


Einführung

Eine Schleife ist eine Befehlsfolge, die ständig wiederholt wird, bis eine bestimmte Bedingung erreicht ist. In der Lage zu sein, Ihr Programm wiederholt einen Codeblock ausführen zu lassen, ist eine der grundlegendsten, aber nützlichsten Aufgaben bei der Programmierung. In einer Schleife können Sie eine sehr einfache Anweisung schreiben, um durch Wiederholung ein deutlich größeres Ergebnis zu erzielen. Wenn die Bedingung erreicht ist, "fällt" der nächste Befehl zum nächsten sequentiellen Befehl oder verzweigt außerhalb der Schleife.

Syntax

  • für (<Initialisierung>; <Bedingung>; <Wiederholung>) {<Script_Block>}

  • <Sammlung> | Foreach-Objekt {<Script_Block_with _ $ __ as_current_item>}

  • foreach (<item> in <Collection>) {<Skriptblock>}

  • while (<Bedingung>) {<Script_Block>}

  • do {<Script_Block>} while (<Bedingung>)

  • do {<Script_Block>} bis (<Bedingung>)

  • <Collection> .foreach ({<Script_Block_with _ $ __ as_current_item>})

Bemerkungen

Für jeden

Es gibt mehrere Möglichkeiten, eine Foreach-Schleife in PowerShell auszuführen, und alle bringen ihre eigenen Vor- und Nachteile mit sich:

Lösung Vorteile Nachteile
Foreach-Anweisung Am schnellsten Funktioniert am besten mit statischen Sammlungen (in einer Variablen gespeichert). Keine Pipeline-Eingabe oder -Ausgabe
ForEach () - Methode Dieselbe Skriptblock-Syntax wie Foreach-Object , jedoch schneller. Funktioniert am besten mit statischen Sammlungen (in einer Variablen gespeichert). Unterstützt die Pipeline-Ausgabe. Keine Unterstützung für Pipeline-Eingabe. Erfordert PowerShell 4.0 oder höher
Foreach-Object (Cmdlet) Unterstützt die Eingabe und Ausgabe von Pipelines. Unterstützt Anfangs- und End-Skriptblöcke zum Initialisieren und Schließen von Verbindungen usw. Flexibelste Lösung. Am langsamsten

Performance

$foreach = Measure-Command { foreach ($i in (1..1000000)) { $i * $i } }
$foreachmethod = Measure-Command { (1..1000000).ForEach{ $_ * $_ } }
$foreachobject = Measure-Command { (1..1000000) | ForEach-Object { $_ * $_ } }

"Foreach: $($foreach.TotalSeconds)"
"Foreach method: $($foreachmethod.TotalSeconds)"
"ForEach-Object: $($foreachobject.TotalSeconds)"

Example output:

Foreach: 1.9039875
Foreach method: 4.7559563
ForEach-Object: 10.7543821

Während Foreach-Object das langsamste ist, kann die Pipeline-Unterstützung nützlich sein, da Sie Elemente sofort beim Eintreffen verarbeiten können (beim Lesen einer Datei, Empfangen von Daten usw.). Dies kann sehr nützlich sein, wenn Sie mit Big Data und wenig Speicher arbeiten, da Sie nicht alle Daten vor der Verarbeitung in den Speicher laden müssen.

Schleifen Verwandte Beispiele