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
({{pro_count}})
{{percentage}} % positiv
({{con_count}})
DANKE für deine Bewertung!
Beitrag erstellt von Bernhard
| Veröffentlicht: 14.01.2016
| Aktualisiert: 18.08.2020 |
Translation English
|🔔
| Kommentare:3
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(am besten bewertete zuerst)]
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'}
}
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
}
danke habe ich ausgebessert
Beitrag erstellt von Bernhard