Flusssteuerung

Abgeschlossen

Die Flusssteuerung bezieht sich darauf, wie Ihr Code in der Konsole oder im Skript ausgeführt wird. Sie beschreibt den Ablauf, dem der Code folgt, und wie Sie den Ablauf steuern. Zur Ablaufsteuerung sind verschiedene Konstrukte verfügbar. Der Code kann alle Anweisungen oder nur einige davon ausführen. Er kann auch bestimmte Anweisungen wiederholen, bis eine bestimmte Bedingung erfüllt wird.

Sehen wir uns diese Konstrukte zur Flusssteuerung an, um zu sehen, was sie bewirken:

  • Bereinigen der Eingabe. Wenn Sie Parameter in einem Skript verwenden, müssen Sie sicherstellen, dass Ihre Parameter passende Werte enthalten, damit Ihr Skript wie vorgesehen funktioniert. Das Schreiben von Code zum Verwalten dieses Prozesses wird als Bereinigung der Eingabe bezeichnet.

  • Steuern des Ausführungsflusses. Mit der vorherigen Methode wird sichergestellt, dass Sie sinnvolle und korrekte Eingabedaten erhalten. Bei dieser Technik geht es mehr um die Entscheidung, wie Code ausgeführt werden soll. Anhand der festgelegten Werten kann bestimmt werden, welche Gruppe von Anweisungen ausgeführt wird.

  • Über Daten iterieren. Manchmal haben Ihre Daten die Form eines Arrays, also eine Datenstruktur mit vielen Elementen. Bei solchen Daten kann es erforderlich sein, jedes Element zu untersuchen und für jedes Element einen Vorgang auszuführen. Viele Konstrukte in PowerShell können Ihnen dabei helfen.

    Hinweis

    Das Durchlaufen von Arrays wird im Rahmen dieses Moduls nicht behandelt. Es gibt viele Konstrukte zur Unterstützung der Flusssteuerung in PowerShell. Zwar können wir sie nicht alle aufzählen, aber wir werden über einige wichtige sprechen, auf die Sie wahrscheinlich stoßen, wenn Sie Skripts lesen oder schreiben.

Verwalten des Eingabe- und Ausführungsflusses mit If, ElseIf und Else

Sie können ein If-Konstrukt verwenden, um zu bestimmen, ob ein Ausdruck True oder False ist. Abhängig von dem Ergebnis können Sie die vom If-Konstrukt definierte Anweisung ausführen. Die Syntax für If sieht folgendermaßen aus:

If (<expression that evaluates to True or False>) 
{
  # Statement that runs only if the preceding expression is $True.
}

Operatoren

PowerShell verfügt über zwei integrierte Parameter, um zu bestimmen, ob ein Ausdruck True oder False ist:

  • $True gibt an, dass ein Ausdruck True ist.
  • $False gibt an, dass ein Ausdruck False ist.

Sie können Operatoren verwenden, um zu bestimmen, ob ein Ausdruck True oder False ist. Es gibt verschiedene Operatoren. In der Regel besteht das Grundprinzip darin, festzustellen, ob etwas auf der linken Seite des Operators mit etwas auf dessen rechter Seite entsprechend der Bedingung des Operators übereinstimmt. Ein Operator kann Bedingungen ausdrücken, z. B. ob ein Wert gleich einem anderen oder größer als ein anderer Wert ist oder ob er mit einem regulären Ausdruck übereinstimmt.

Hier sehen Sie ein Beispiel für die Verwendung eines Operators. Der Operator -le bestimmt, ob der Wert auf der linken Seite des Operators kleiner oder gleich dem Wert auf der rechten Seite ist:

$Value = 3
If ($Value -le 0) 
{
  Write-Host "Is negative"
}

Dieser Code zeigt nichts an, da der Ausdruck als False ausgewertet wird. Der Wert 3 ist eindeutig positiv.

Else

Das If-Konstrukt führt Anweisungen nur aus, wenn sie zu True ausgewertet werden. Was geschieht, wenn Sie Fälle behandeln möchten, in denen sie als False ausgewertet werden? Dies ist die Gelegenheit, bei der Sie das Else-Konstrukt verwenden. If gibt an, „wenn dieser spezifische Fall true ist, führen Sie diese Anweisung aus.“ Else nimmt keinen Ausdruck an. Erfasst alle Fälle, in denen die If-Klausel zu False ausgewertet wird. Wenn If und Else kombiniert werden, führt der Code die Anweisungen in einem der beiden Konstrukte aus. Nun ändern wir den vorherigen Code so, dass er ein Else-Konstrukt enthält:

$Value = 3
If ($Value -le 0) 
{
  Write-Host "Is negative"
} Else {
  Write-Host "Is Positive"
}

Da wir das Else-Element neben die schließende Klammer des If gesetzt haben, haben wir ein zusammengefügtes Konstrukt erstellt, das als ein Ganzes funktioniert. Wenn Sie diesen Code in der Konsole ausführen, sehen Sie die Ausgabe Is Positive. Dies liegt daran, dass If als False ausgewertet wird, aber Else als True ausgewertet wird. Daher gibt Else seine Anweisung aus.

Hinweis

Sie können Else nur verwenden, wenn direkt darüber ein If-Konstrukt definiert ist.

ElseIf

If und Else sind gut geeignet, um alle Pfade zu abdecken, die der Code verwenden kann. ElseIf ist ein weiteres, hilfreiches Konstrukt. ElseIf ist für die Verwendung mit If vorgesehen. Es bewirkt, dass „der Ausdruck in diesem Konstrukt ausgewertet wird, wenn die vorherige If-Anweisung als False ausgewertet wird.“ Wie auch If kann ElseIf einen Ausdruck verwenden. Sie können sich ElseIf als sekundären If-Ausdruck vorzustellen.

Im Folgenden sehen Sie ein Beispiel, das ElseIf verwendet:

# _FullyTax.ps1_
# Possible values: 'Minor', 'Adult', 'Senior Citizen'
$Status = 'Minor'
If ($Status -eq 'Minor') 
{
  Write-Host $False
} ElseIf ($Status -eq 'Adult') {
  Write-Host $True
} Else {
  Write-Host $False
}

Es ist möglich, diesen Code kompakter zu schreiben, doch auf diese Weise zeigt er die Verwendung von ElseIf. Er verdeutlicht, wie If zuerst ausgewertet wird, dann ElseIf und dann Else.

Hinweis

Wie bei Else können Sie ElseIf nicht verwenden, wenn Sie nicht If darüber definieren.