PowerShell if else und switch

 

Mit den Befehlen if, elseif, else und switch Bedingungen testen und falls diese zutreffen einen Befehl ausführen: wenn, sonst, ... dann

if - elseif - else


In folgendem Beispiel wird die die Variable $Eingabe auf bestimmte Werte getestet, wenn keines der Werte zutrifft kommt else zum Einsatz:  

$Eingabe=4 #Eingabe wird mit dem Wert 4 festgelegt
 
if ($Eingabe -eq '1') { #Teste ob die Variable Eingabe gleich 1 ist. Trifft nicht zu, der folgende Befehl wird nicht ausgeführt:
        write-host 'die Variable Eingabe=1'  #Der Befehl falls Eingabe gleich 1: schreibe die Variable Eingabe=1
    } elseif ($Eingabe -eq '2') { #Teste ob Eingabe gleich 2 ist. Trifft nicht zu
        write-host 'die Variable Eingabe=2'
    } elseif ($Eingabe -eq '3') {#Teste ob Eingabe gleich 3 ist: Trifft nicht zu
        write-host 'die Variable Eingabe=3'
    } else {#wenn keine der Bedingungen zutrifft, weiter mit folgenden Skriptblock
        write-host 'die Variable ist weder 1 noch 2 noch 3'#Befehl:schreibe "die Variable ist weder 1 noch 2 noch 3"
    }

 Ausgabe

die Variable ist weder 1 noch 2 noch 3
PS C:\WINDOWS\system32> 

switch

Bei mehreren if- elseif Abfragen kann der Befehl switch verwendet werden:

$Eingabe=2
$Detail = Switch($Eingabe) {
    0 {'Die Variable ist 0'}
    1 {'Die Variable ist 1'}
    2 {'Die Variable ist 2'}
    3 {'Die Variable ist 3'}
    4 {'Die Variable ist 4'}
}
$Detail

Ausgabe:

Die Variable ist 2

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
29.08.2016 06:24
User: rost 
ich glaube, das erste Beispiel ist fehlerhaft ! Zumindest wird das Ergebnis nicht richtig ausgegeben, wenn mann eine Zahl mit einem Wert zwischen 1-3 angibt. Richtig könnte es so aussehen:

$Eingabe=read-host -prompt "Bitte eine Zahl eingeben"

if ($Eingabe -eq '1') {write-host 'Die Zahl ist 1'
}
    
    elseif ($Eingabe -eq '2') { 
        write-host 'Die Zahl ist 2'
    }

    elseif ($Eingabe -eq '3') {
    write-host 'Die Zahl ist 3'
    }
    
    elseif ($Eingabe -eq '4') {
    write-host 'Die Zahl ist 4'
    }
    
else {#wenn keine der Bedingungen zutrifft, weiter mit folgenden Skriptblock
    write-host 'Die Eingabe ist keine Zahl zwischen 1 und 4' -foregroundcolor red
}
✍Bernhard
gepostet am 29.08.2016 06:24
danke habe ich ausgebessert

Beitrag erstellt von Bernhard

✍anonym
29.08.2016 07:14
User: rost 
Auch die switch-Anweisung ist so nicht wirklich korrekt ! Besser wäre:

Switch(Read-Host "Geben Sie eine Variable ein") {
    0{'Die Variable ist 0'}
    1{'Die Variable ist 1'}
    2{'Die Variable ist 2'}
    3{'Die Variable ist 3'}
    4{'Die Variable ist 4'}
    
 default {'ungültige Eingabe'}
}