PowerShell if 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
Switch($Eingabe) {
    0{$Detail = 'Die Variable ist 0'}
    1{$Detail = 'Die Variable ist 1'}
    2{$Detail = 'Die Variable ist 2'}
    3{$Detail = 'Die Variable ist 3'}
    4{$Detail = 'Die Variable ist 4'}
}
$Detail

 

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

DANKE für deine Bewertung!


veröffentlicht am 14.01.2016 von Bernhard
geändert am 11.10.2016 von Bernhard



Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]
✍anonym
erstellt am 29.08.2016 08:08
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
erstellt am 29.08.2016 08:08
danke habe ich ausgebessert

erstellt von Bernhard

✍anonym
erstellt am 29.08.2016 09:08
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'}
}

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Mehr Details