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
$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!


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



Fragen / 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'}
}

Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter. Details anzeigen.