PowerShell
Schakel statement
Zoeken…
Invoering
Met een schakelinstructie kan een variabele worden getest op gelijkheid met een zoeklijst. Elke waarde wordt een case genoemd en de variabele die wordt ingeschakeld , wordt voor elke switch-case gecontroleerd. Hiermee kunt u een script schrijven dat uit een reeks opties kan kiezen, maar zonder dat u een lange reeks if-instructies hoeft te schrijven.
Opmerkingen
In dit onderwerp wordt de switch-instructie gedocumenteerd die wordt gebruikt voor het vertakken van de stroom van het script. Verwar het niet met schakelparameters die worden gebruikt in functies als Booleaanse vlaggen.
Eenvoudige schakelaar
Switch-instructies vergelijken een enkele testwaarde met meerdere voorwaarden en voert bijbehorende acties uit voor succesvolle vergelijkingen. Het kan resulteren in meerdere wedstrijden / acties.
Gegeven de volgende schakelaar ...
switch($myValue)
{
'First Condition' { 'First Action' }
'Second Condition' { 'Second Action' }
}
'First Action'
wordt uitgevoerd als $myValue
is ingesteld als 'First Condition'
.
'Section Action'
$myValue
'Section Action'
wordt uitgevoerd als $myValue
is ingesteld als 'Second Condition'
.
Er wordt niets uitgevoerd als $myValue
niet aan beide voorwaarden voldoet.
Switch-instructie met Regex-parameter
Met de parameter -Regex
kunnen schakelopdrachten reguliere expressie vergelijken met voorwaarden.
Voorbeeld:
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'}
}
Output:
One or more non-digits
Any single char.
Anchors and one or more word chars.
Eenvoudige schakelaar met pauze
Het sleutelwoord break
kan worden gebruikt in schakelinstructies om de instructie af te sluiten voordat alle voorwaarden worden geëvalueerd.
Voorbeeld:
switch('Condition')
{
'Condition'
{
'First Action'
}
'Condition'
{
'Second Action'
break
}
'Condition'
{
'Third Action'
}
}
Output:
First Action
Second Action
Vanwege het sleutelwoord break
in de tweede actie wordt de derde voorwaarde niet geëvalueerd.
Schakel Statement met Wildcard Parameter
Met de parameter -Wildcard
kunnen schakelopdrachten jokertekens vergelijken met voorwaarden.
Voorbeeld:
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'}
}
Output:
Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard
Schakel instructie met exacte parameter
De parameter -Exact
dwingt schakelinstructies af om exacte, niet-hoofdlettergevoelige overeenkomsten uit te voeren met string-voorwaarden.
Voorbeeld:
switch -Exact ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
'^*ondition$' {'Fourth Action'}
'Conditio*' {'Fifth Action'}
}
Output:
First Action
Second Action
Third Action
De eerste tot en met derde acties worden uitgevoerd omdat de bijbehorende voorwaarden overeenkomen met de invoer. De regex- en jokertekens in de vierde en vijfde voorwaarden komen niet overeen.
Merk op dat de vierde voorwaarde ook zou overeenkomen met de invoertekenreeks als reguliere expressie matching werd uitgevoerd, maar in dit geval werd genegeerd omdat dit niet het geval is.
Schakel Statement met CaseSensitive Parameter
De parameter -CaseSensitive
dwingt schakelinstructies af om exacte, hoofdlettergevoelige overeenkomsten uit te voeren tegen voorwaarden.
Voorbeeld:
switch -CaseSensitive ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
}
Output:
Second Action
De tweede actie is de enige uitgevoerde actie omdat het de enige voorwaarde is die exact overeenkomt met de tekenreeks 'Condition'
wanneer rekening wordt gehouden met hoofdlettergevoeligheid.
Schakel instructie met bestandsparameter
Met de parameter -file
kan de switch-opdracht invoer ontvangen van een bestand. Elke regel van het bestand wordt geëvalueerd door de schakelopdracht.
Voorbeeldbestand input.txt
:
condition
test
Voorbeeld schakelinstructie:
switch -file input.txt
{
'condition' {'First Action'}
'test' {'Second Action'}
'fail' {'Third Action'}
}
Output:
First Action
Second Action
Eenvoudige schakelaar met standaardconditie
Het Default
sleutelwoord wordt gebruikt om een actie uit te voeren wanneer er geen andere voorwaarden overeenkomen met de invoerwaarde.
Voorbeeld:
switch('Condition')
{
'Skip Condition'
{
'First Action'
}
'Skip This Condition Too'
{
'Second Action'
}
Default
{
'Default Action'
}
}
Output:
Default Action
Schakel verklaring met uitdrukkingen
Voorwaarden kunnen ook uitdrukkingen zijn:
$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