Freigeben über


about_If

Kurze Beschreibung

Beschreibt einen Sprachbefehl, den Sie verwenden können, um Anweisungslisten basierend auf den Ergebnissen eines oder mehrerer bedingter Tests auszuführen.

Lange Beschreibung

Sie können die If -Anweisung verwenden, um Codeblöcke auszuführen, wenn ein angegebener bedingter Test als true ausgewertet wird. Sie können auch einen oder mehrere zusätzliche bedingte Tests angeben, die ausgeführt werden sollen, wenn alle vorherigen Tests auf false ausgewertet werden. Schließlich können Sie einen zusätzlichen Codeblock angeben, der ausgeführt wird, wenn kein anderer vorheriger bedingter Test als true ausgewertet wird.

Syntax

Das folgende Beispiel zeigt die Anweisungssyntax If :

if (<test1>)
    {<statement list 1>}
[elseif (<test2>)
    {<statement list 2>}]
[else
    {<statement list 3>}]

Wenn Sie eine If Anweisung ausführen, wertet PowerShell den <test1> bedingten Ausdruck als true oder false aus. Wenn <test1> true ist, <statement list 1> wird ausgeführt, und PowerShell beendet die If Anweisung. Wenn <test1> false ist, wertet PowerShell die bedingung aus, die von der <test2> bedingten Anweisung angegeben wird.

Weitere Informationen zur booleschen Auswertung finden Sie unter about_Booleans.

Wenn <test2> true ist, <statement list 2> wird ausgeführt, und PowerShell beendet die If Anweisung. Wenn sowohl als auch <test1><test2> auf false ausgewertet wird, wird der <statement list 3> Codeblock ausgeführt, und PowerShell beendet die If-Anweisung.

Sie können mehrere Elseif Anweisungen verwenden, um eine Reihe bedingter Tests zu verketten. Jeder Test wird also nur ausgeführt, wenn alle vorherigen Tests false sind. Wenn Sie eine If Anweisung erstellen müssen, die viele Elseif Anweisungen enthält, sollten Sie stattdessen eine Switch-Anweisung verwenden.

Beispiele:

Die einfachste If Anweisung enthält einen einzelnen Befehl und keine Elseif-Anweisungen oder Else-Anweisungen. Das folgende Beispiel zeigt die einfachste Form der If Anweisung:

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}

Wenn in diesem Beispiel die $a Variable größer als 2 ist, wird die Bedingung als true ausgewertet, und die Anweisungsliste wird ausgeführt. Wenn $a jedoch kleiner oder gleich 2 ist oder keine vorhandene Variable ist, zeigt die If Anweisung keine Meldung an.

Durch Hinzufügen einer Else-Anweisung wird eine Meldung angezeigt, wenn $a kleiner oder gleich 2 ist. Wie das nächste Beispiel zeigt:

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}
else {
    Write-Host ("The value $a is less than or equal to 2," +
        " is not created or is not initialized.")
}

Um dieses Beispiel weiter zu verfeinern, können Sie die Elseif-Anweisung verwenden, um eine Nachricht anzuzeigen, wenn der Wert von $a gleich 2 ist. Wie das nächste Beispiel zeigt:

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
    Write-Host "The value $a is equal to 2."
}
else {
    Write-Host ("The value $a is less than 2 or" +
        " was not created or initialized.")
}

Verwenden der ternären Operatorsyntax

PowerShell 7.0 hat eine neue Syntax mit dem ternären Operator eingeführt. Sie folgt der Syntax des ternären C#-Operators:

<condition> ? <if-true> : <if-false>

Der ternäre Operator verhält sich wie die vereinfachte if-else Anweisung. Der <condition> Ausdruck wird ausgewertet, und das Ergebnis wird in einen booleschen Wert konvertiert, um zu bestimmen, welcher Branch als Nächstes ausgewertet werden soll:

  • Der Ausdruck <if-true> wird ausgeführt, wenn der Ausdruck <condition> TRUE ist.
  • Der Ausdruck <if-false> wird ausgeführt, wenn der Ausdruck <condition> FALSE ist.

Beispiel:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

In diesem Beispiel ist der Wert von $message "Pfad vorhanden", wenn Test-Path zurückgegeben wird $true. Wenn Test-Path zurückgegeben $falsewird, ist der Wert von $message "Pfad nicht gefunden".

$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)

Wenn der Dienst in diesem Beispiel ausgeführt wird, wird er beendet, und wenn sein status nicht ausgeführt ist, wird er gestartet.

Weitere Informationen