PowerShell
Anweisung wechseln
Suche…
Einführung
Mit einer switch-Anweisung kann eine Variable auf Gleichheit mit einer Liste von Werten getestet werden. Jeder Wert ist ein Fall genannt, und die Variable umgeschaltet wird auf für jedes Schaltergehäuse überprüft. Damit können Sie ein Skript schreiben, das aus einer Reihe von Optionen auswählen kann, ohne dass Sie dazu eine lange Reihe von if-Anweisungen schreiben müssen.
Bemerkungen
In diesem Thema wird die switch-Anweisung beschrieben, die zum Verzweigen des Skriptflusses verwendet wird. Verwechseln Sie es nicht mit Schalterparametern, die in Funktionen als boolesche Flags verwendet werden.
Einfacher Schalter
Switch-Anweisungen vergleichen einen einzelnen Testwert mit mehreren Bedingungen und führen alle zugehörigen Aktionen für erfolgreiche Vergleiche aus. Dies kann zu mehreren Übereinstimmungen / Aktionen führen.
Bei folgendem Wechsel ...
switch($myValue)
{
'First Condition' { 'First Action' }
'Second Condition' { 'Second Action' }
}
'First Action'
wird ausgegeben, wenn $myValue
als 'First Condition'
.
'Section Action'
wird ausgegeben, wenn $myValue
als 'Second Condition'
.
Es wird nichts ausgegeben, wenn $myValue
keine der Bedingungen erfüllt.
Wechselanweisung mit Regex-Parameter
Mit -Regex
Parameter -Regex
können switch-Anweisungen einen Abgleich mit regulären Ausdrücken mit Bedingungen durchführen.
Beispiel:
switch -Regex ('Condition')
{
'Con\D+ion' {'One or more non-digits'}
'Conditio*$' {'Zero or more "o"'}
'C.ndition' {'Any single char.'}
'^C\w+ition$' {'Anchors and one or more word chars.'}
'Test' {'No match'}
}
Ausgabe:
One or more non-digits
Any single char.
Anchors and one or more word chars.
Einfacher Schalter mit Pause
Das Schlüsselwort break
kann in switch-Anweisungen zum Beenden der Anweisung verwendet werden, bevor alle Bedingungen ausgewertet werden.
Beispiel:
switch('Condition')
{
'Condition'
{
'First Action'
}
'Condition'
{
'Second Action'
break
}
'Condition'
{
'Third Action'
}
}
Ausgabe:
First Action
Second Action
Aufgrund des Schlüsselworts break
in der zweiten Aktion wird die dritte Bedingung nicht ausgewertet.
Wechselanweisung mit Platzhalterparameter
Mit -Wildcard
Parameter -Wildcard
können switch-Anweisungen einen Platzhalterabgleich mit Bedingungen durchführen.
Beispiel:
switch -Wildcard ('Condition')
{
'Condition' {'Normal match'}
'Condit*' {'Zero or more wildcard chars.'}
'C[aoc]ndit[f-l]on' {'Range and set of chars.'}
'C?ndition' {'Single char. wildcard'}
'Test*' {'No match'}
}
Ausgabe:
Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard
Wechselanweisung mit genauem Parameter
Der Parameter -Exact
erzwingt, dass switch-Anweisungen einen exakten, von der Groß- und Kleinschreibung abhängigen Abgleich mit Zeichenfolgenbedingungen durchführen.
Beispiel:
switch -Exact ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
'^*ondition$' {'Fourth Action'}
'Conditio*' {'Fifth Action'}
}
Ausgabe:
First Action
Second Action
Third Action
Die erste bis dritte Aktion wird ausgeführt, weil ihre zugehörigen Bedingungen mit der Eingabe übereinstimmen. Die Regex- und Platzhalterzeichenfolgen in der vierten und fünften Bedingung stimmen nicht überein.
Beachten Sie, dass die vierte Bedingung auch mit der Eingabezeichenfolge übereinstimmen würde, wenn der Abgleich mit regulären Ausdrücken durchgeführt wurde, in diesem Fall jedoch ignoriert wurde, da dies nicht der Fall ist.
Switch-Anweisung mit CaseSensitive-Parameter
Mit -CaseSensitive
Parameter -CaseSensitive
werden Switch-Anweisungen -CaseSensitive
, um eine genaue, von der Groß- und Kleinschreibung abhängige Übereinstimmung mit Bedingungen durchzuführen.
Beispiel:
switch -CaseSensitive ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
}
Ausgabe:
Second Action
Die zweite Aktion ist die einzige Aktion, die ausgeführt wird, da sie die einzige Bedingung ist, die genau mit der Zeichenfolge 'Condition'
übereinstimmt 'Condition'
wenn die Groß- / Kleinschreibung berücksichtigt wird.
Wechselanweisung mit Dateiparameter
Mit -file
Parameter -file
kann die switch-Anweisung Eingaben von einer Datei empfangen. Jede Zeile der Datei wird von der switch-Anweisung ausgewertet.
Beispieldatei input.txt
:
condition
test
Beispiel für eine Wechselanweisung:
switch -file input.txt
{
'condition' {'First Action'}
'test' {'Second Action'}
'fail' {'Third Action'}
}
Ausgabe:
First Action
Second Action
Einfacher Switch mit Standardbedingung
Mit dem Default
wird eine Aktion ausgeführt, wenn keine anderen Bedingungen mit dem Eingabewert übereinstimmen.
Beispiel:
switch('Condition')
{
'Skip Condition'
{
'First Action'
}
'Skip This Condition Too'
{
'Second Action'
}
Default
{
'Default Action'
}
}
Ausgabe:
Default Action
Anweisung mit Ausdrücken wechseln
Bedingungen können auch Ausdrücke sein:
$myInput = 0
switch($myInput) {
# because the result of the expression, 4,
# does not equal our input this block should not be run.
(2+2) { 'True. 2 +2 = 4' }
# because the result of the expression, 0,
# does equal our input this block should be run.
(2-2) { 'True. 2-2 = 0' }
# because our input is greater than -1 and is less than 1
# the expression evaluates to true and the block should be run.
{ $_ -gt -1 -and $_ -lt 1 } { 'True. Value is 0' }
}
#Output
True. 2-2 = 0
True. Value is 0