Sdílet prostřednictvím


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

VIZ TAKÉ

about_Break

about_Continue

about_If

about_Script_Blocks