about_For
Kurze Beschreibung
Beschreibt einen Sprachbefehl, den Sie verwenden können, um Anweisungen basierend auf einem bedingten Test auszuführen.
Lange Beschreibung
Die For
-Anweisung (auch als For
Schleife bezeichnet) ist ein Sprachkonstrukt, mit dem Sie eine Schleife erstellen können, die Befehle in einem Befehlsblock ausführt, während eine angegebene Bedingung als $true
ausgewertet wird.
Eine typische Verwendung der For
Schleife besteht darin, ein Array von Werten zu durchlaufen und mit einer Teilmenge dieser Werte zu arbeiten. Wenn Sie alle Werte in einem Array durchlaufen möchten, sollten Sie in den meisten Fällen eine Foreach
-Anweisung verwenden.
Syntax
Im Folgenden wird die -Anweisungssyntax For
veranschaulicht.
for (<Init>; <Condition>; <Repeat>)
{
<Statement list>
}
Der Init-Platzhalter stellt einen oder mehrere Befehle dar, die ausgeführt werden, bevor die Schleife beginnt. In der Regel verwenden Sie den Init-Teil der Anweisung, um eine Variable mit einem Startwert zu erstellen und zu initialisieren.
Diese Variable ist dann die Grundlage für die Bedingung, die im nächsten Teil der For
Anweisung getestet werden soll.
Der Platzhalter Bedingung stellt den Teil der Anweisung dar, der For
in einen $true
booleschen Wert oder $false
aufgelöst wird. PowerShell wertet die Bedingung bei jeder Ausführung der For
Schleife aus. Wenn die -Anweisung lautet $true
, werden die Befehle im Befehlsblock ausgeführt, und die Anweisung wird erneut ausgewertet. Wenn die Bedingung weiterhin $true
lautet, werden die Befehle in der Anweisungsliste erneut ausgeführt.
Die Schleife wird wiederholt, bis die Bedingung zu wird $false
.
Der Platzhalter Wiederholen stellt einen oder mehrere Befehle dar, getrennt durch Kommas, die bei jeder Wiederholung der Schleife ausgeführt werden. In der Regel wird dies verwendet, um eine Variable zu ändern, die innerhalb des Bedingungsteils der Anweisung getestet wird.
Der Platzhalter für die Anweisungsliste stellt einen Satz von mindestens einem Befehl dar, der jedes Mal ausgeführt wird, wenn die Schleife eingegeben oder wiederholt wird. Der Inhalt der Anweisungsliste wird von geschweiften Klammern umgeben.
Unterstützung für mehrere Vorgänge
Die folgenden Syntaxen werden für mehrere Zuweisungsvorgänge in der Init-Anweisung unterstützt:
# Comma separated assignment expressions enclosed in parenthesis.
for (($i = 0), ($j = 0); $i -lt 10; $i++)
{
"`$i:$i"
"`$j:$j"
}
# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $i++)
{
"`$i:$i"
"`$j:$j"
}
Die folgenden Syntaxen werden für mehrere Zuweisungsvorgänge in der Repeat-Anweisung unterstützt:
# Comma separated assignment expressions.
for (($i = 0), ($j = 0); $i -lt 10; $i++, $j++)
{
"`$i:$i"
"`$j:$j"
}
# Comma separated assignment expressions enclosed in parenthesis.
for (($i = 0), ($j = 0); $i -lt 10; ($i++), ($j++))
{
"`$i:$i"
"`$j:$j"
}
# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $($i++;$j++))
{
"`$i:$i"
"`$j:$j"
}
Hinweis
Andere Vorgänge als Pre- oder Post-Inkrement funktionieren möglicherweise nicht mit allen Syntaxen.
Verwenden Sie für mehrere Bedingungen logische Operatoren, wie im folgenden Beispiel veranschaulicht.
for (($i = 0), ($j = 0); $i -lt 10 -and $j -lt 10; $i++,$j++)
{
"`$i:$i"
"`$j:$j"
}
Weitere Informationen finden Sie unter about_Logical_Operators.
Beispiele
Mindestens erfordert eine For
-Anweisung die Klammern, die den Init-, Condition- und Repeat-Teil der Anweisung umgeben, sowie einen Befehl, der von Klammern im Anweisungslistenteil der Anweisung umgeben ist.
Beachten Sie, dass in den kommenden Beispielen absichtlich Code außerhalb der For
-Anweisung angezeigt wird. In späteren Beispielen ist Code in die For
-Anweisung integriert.
Beispielsweise zeigt die folgende For
Anweisung kontinuierlich den Wert der $i
Variablen an, bis Sie den Befehl manuell durch Drücken von STRG+C unterbrechen.
$i = 1
for (;;)
{
Write-Host $i
}
Sie können der Anweisungsliste zusätzliche Befehle hinzufügen, sodass der Wert von $i
bei jeder Ausführung der Schleife um 1 erhöht wird, wie im folgenden Beispiel gezeigt.
for (;;)
{
$i++; Write-Host $i
}
Bis Sie den Befehl durch Drücken von STRG+C unterbrechen, zeigt diese Anweisung kontinuierlich den Wert der $i
Variablen an, da er bei jeder Ausführung der Schleife um 1 erhöht wird.
Anstatt den Wert der Variablen im Anweisungslistenteil der For
Anweisung zu ändern, können Sie stattdessen wie folgt den Repeat-Teil der For
Anweisung verwenden.
$i=1
for (;;$i++)
{
Write-Host $i
}
Diese Anweisung wird weiterhin unbegrenzt wiederholt, bis Sie den Befehl durch Drücken von STRG+C abbrechen.
Sie können die For
Schleife mit einer Bedingung beenden. Sie können eine Bedingung mithilfe des Bedingungsteils der For
Anweisung platzieren. Die For
Schleife wird beendet, wenn die Bedingung als ausgewertet wird $false
.
Im folgenden Beispiel wird die For
Schleife ausgeführt, während der Wert von $i
kleiner oder gleich 10 ist.
$i=1
for(;$i -le 10;$i++)
{
Write-Host $i
}
Anstatt die Variable außerhalb der For
Anweisung zu erstellen und zu initialisieren, können Sie diese Aufgabe innerhalb der For
Schleife ausführen, indem Sie den Init-Teil der For
Anweisung verwenden.
for($i=1; $i -le 10; $i++){Write-Host $i}
Sie können Wagenrückläufe anstelle von Semikolons verwenden, um die Teile Init, Condition und Repeat der For
Anweisung zu trennen. Das folgende Beispiel zeigt eine For
, die diese alternative Syntax verwendet.
for ($i = 0
$i -lt 10
$i++){
$i
}
Diese alternative Form der For
Anweisung funktioniert in PowerShell-Skriptdateien und an der PowerShell-Eingabeaufforderung. Es ist jedoch einfacher, die For
Anweisungssyntax mit Semikolons zu verwenden, wenn Sie interaktive Befehle an der Eingabeaufforderung eingeben.
Die For
Schleife ist flexibler als die Foreach
-Schleife, da sie ihnen das Inkrementieren von Werten in einem Array oder einer Auflistung mithilfe von Mustern ermöglicht. Im folgenden Beispiel wird die $i
Variable im Repeat-Teil der For
Anweisung um 2 erhöht.
for ($i = 0; $i -le 20; $i += 2)
{
Write-Host $i
}
Die For
Schleife kann auch wie im folgenden Beispiel in einer Zeile geschrieben werden.
for ($i = 0; $i -lt 10; $i++) { Write-Host $i }