Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
Beschreibt einen Sprachbefehl, mit dem Sie Anweisungslisten basierend auf den Ergebnissen einer oder mehrerer bedingter Tests ausführen können.
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 als falsch ausgewertet werden. Schließlich können Sie einen zusätzlichen Codeblock angeben, der ausgeführt wird, wenn kein anderer vorheriger bedingter Test als wahr ausgewertet wird.
Syntax
Das folgende Beispiel zeigt die Syntax der If-Anweisung:
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> wahr ist, wird <statement list 1> ausgeführt, und PowerShell beendet die If-Anweisung. Wenn <test1> "false" ist, wertet PowerShell die durch die <test2> bedingungsbedingte Anweisung angegebene Bedingung aus.
Weitere Informationen zur booleschen Auswertung finden Sie unter about_Booleans.
Wenn <test2> wahr ist, wird <statement list 2> ausgeführt, und PowerShell beendet die If-Anweisung. Wenn both und <test1><test2> evaluate auf false festgelegt ist, wird der <statement list 3> Codeblock ausgeführt, und PowerShell beendet die If-Anweisung.
Sie können mehrere Elseif-Anweisungen verwenden, um eine Reihe von bedingten Tests zu verketten. So wird jeder Test nur ausgeführt, wenn alle vorherigen Tests falsch 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 Variable $a größer als 2 ist, wird die Bedingung als wahr 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 Meldung 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. Es folgt der Syntax des C#-ternären 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, welche Verzweigung als Nächstes ausgewertet werden soll:
- Der
<if-true>Ausdruck wird ausgeführt, wenn der<condition>Ausdruck wahr ist. - Der ausdruck
<if-false>wird ausgeführt, wenn der<condition>Ausdruck "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 .$true
$falseWenn Test-Path zurückgegeben wird, 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 gestoppt, und wenn sein Status nicht Wird ausgeführt lautet, wird er gestartet.