Informace o přepínači
STRUČNÝ POPIS
Vysvětluje, jak použít přepínač ke zpracování více příkazů If.
DLOUHÝ POPIS
Pokud chcete zkontrolovat podmínku ve skriptu nebo funkci, použijte příkaz If
. Příkaz If
může kontrolovat mnoho typů podmínek, včetně hodnoty proměnných a vlastností objektů.
Pokud chcete zkontrolovat více podmínek, použijte Switch
příkaz . Příkaz Switch
je ekvivalentem řady příkazů If, ale je jednodušší. Příkaz Switch
vypíše každou podmínku a volitelnou akci. Pokud dojde k podmínce, provede se akce.
Příkaz Switch
také používá automatickou $switch
proměnnou. Další informace najdete v tématu about_Automatic_Variables.
Základní Switch
příkaz má následující formát:
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Například následující Switch
příkaz porovnává hodnotu testu 3 s každou z podmínek. Když hodnota testu odpovídá podmínce, provede se akce.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
V tomto jednoduchém příkladu se hodnota porovná s každou podmínkou v seznamu, i když existuje shoda pro hodnotu 3. Následující Switch
příkaz má dvě podmínky pro hodnotu 3. Ukazuje, že ve výchozím nastavení se testují všechny podmínky.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
Pokud chcete nasměrovat Switch
příkaz k zastavení porovnávání po shodě, použijte Break
příkaz . Příkaz Break
ukončí příkaz Switch
.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Pokud je testovací hodnotou kolekce, například pole, vyhodnocuje se každá položka v kolekci v pořadí, ve kterém se zobrazí. Následující příklady vyhodnotí hodnoty 4 a pak 2.
switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
Všechny Break
příkazy platí pro kolekci, ne pro každou hodnotu, jak je znázorněno v následujícím příkladu. Příkaz Switch
je ukončen příkazem Break
v podmínce hodnoty 4.
switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
Syntax
Úplná Switch
syntaxe příkazu je následující:
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
nebo
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Pokud nejsou použity žádné parametry, Switch
provede přesnou shodu hodnoty, která nerozlišuje velká a malá písmena. Pokud je hodnotou kolekce, je každý prvek vyhodnocen v pořadí, ve kterém se zobrazuje.
Příkaz Switch
musí obsahovat alespoň jeden příkaz podmínky.
Klauzule Default
se aktivuje, když hodnota neodpovídá žádné z podmínek. Je ekvivalentní klauzuli Else
v If
příkazu . V každém Switch
příkazu je povolena pouze jedna Default
klauzule.
Switch
má následující parametry:
Parametr | Popis |
---|---|
Zástupný znak | Označuje, že podmínka je řetězec se zástupným znakem. |
Pokud klauzule match není řetězec, parametr je | |
Ignorovány. | |
Přesné | Označuje, že klauzule match, pokud se jedná o řetězec, musí |
přesně odpovídá. Pokud klauzule match není řetězec, tento parametr | |
se ignoruje. | |
Rozlišování velkých a velkých písmen | Provede shodu s rozlišováním velkých a malých písmen. Pokud klauzule match není |
řetězec, tento parametr se ignoruje. | |
Soubor | Přebírá vstup ze souboru místo příkazu value. Pokud uživatel |
obsahuje několik parametrů souboru , pouze poslední je | |
Používá. Každý řádek souboru přečte a vyhodnotí | |
Switch Prohlášení. |
|
Regex | Provede shodu regulárního výrazu s hodnotou |
Podmínka. Pokud je možnost | |
match klauzule není řetězec, tento parametr se ignoruje. |
Poznámka
Při zadávání konfliktních hodnot, jako je Regulární výraz a Zástupný znak, má poslední zadaný parametr přednost a všechny konfliktní parametry jsou ignorovány. Je také povoleno více instancí parametrů. Platí však pouze poslední použitý parametr.
V tomto příkladu neexistuje žádný odpovídající případ, takže neexistuje žádný výstup.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
Přidáním klauzule Default
můžete provést akci, pokud nejsou splněny žádné jiné podmínky.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
Default {
"No matches"
}
}
No matches
Aby slovo "čtrnáct" odpovídalo písmenům, musíte použít -Wildcard
parametr nebo -Regex
.
PS> switch -Wildcard ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
That's too many.
Následující příklad používá -Regex
parametr .
$target = 'user@contoso.com'
switch -Regex ($target)
{
'ftp\://.*' { "$_ is an ftp address"; Break }
'\w+@\w+\.com|edu|org' { "$_ is an email address"; Break }
'http[s]?\://.*' { "$_ is a web address"; Break }
}
user@contoso.com is an email address
Podmínka Switch
příkazu může být:
- Výraz, jehož hodnota je porovnána se vstupní hodnotou
- Blok skriptu, který by měl vrátit
$true
, pokud je splněna podmínka. Blok skriptu přijme aktuální objekt k porovnání v$_
automatické proměnné a vyhodnotí se ve vlastním oboru.
Akce pro každou podmínku je nezávislá na akcích v jiných podmínkách.
Následující příklad ukazuje použití bloků skriptů jako Switch
podmínky příkazu.
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This executes as well"
}
}
Found a string
This executes as well
Pokud hodnota odpovídá více podmínkám, provede se akce pro každou podmínku. Chcete-li toto chování změnit, použijte Break
klíčová slova nebo Continue
.
Klíčové Break
slovo zastaví zpracování a ukončí Switch
příkaz .
Klíčové Continue
slovo zastaví zpracování aktuální hodnoty, ale pokračuje ve zpracování všech následujících hodnot.
Následující příklad zpracuje pole čísel a zobrazí, jestli jsou lichá nebo sudá. Záporná čísla se přeskočí pomocí klíčového Continue
slova . Pokud dojde k nečíslu, provádění se ukončí s klíčovým slovem Break
.
switch (1,4,-1,3,"Hello",2,1)
{
{$_ -lt 0} { Continue }
{$_ -isnot [Int32]} { Break }
{$_ % 2} {
"$_ is Odd"
}
{-not ($_ % 2)} {
"$_ is Even"
}
}
1 is Odd
4 is Even
3 is Odd