about_Switch

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TÓPICO

about_Switch

DESCRIÇÃO BREVE

Explica como usar uma opção para tratar várias instruções If.

DESCRIÇÃO LONGA

Para verificar uma condição em um script ou função, use uma instrução If. If pode verificar vários tipos de condições, inclusive o valor de variáveis e as propriedades dos objetos.

Para verificar várias condições, use uma instrução Switch. A instrução Switch é equivalente a uma série de instruções, mas é mais simples. A instrução Switch lista cada condição e uma ação opcional. Se obtiver uma condição, a ação é executada.

Uma instrução Switch básica tem o seguinte formato:

        Switch (<test-value>)
        {
            <condition> {<action>}
            <condition> {<action>}
       }

Por exemplo, a seguinte instrução Switch compara o valor de teste, 3, para cada uma das condições. Quando o valor de teste corresponde à condição, a ação é executada.

        PS> switch (3) 
         {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."}
            4 {"It is four."}
         } 
        It is three.

Neste exemplo simples, o valor é comparado com cada condição na lista, mesmo que haja uma correspondência para o valor 3. A seguinte instrução Switch tem duas condições para um valor de 3. Ela demonstra que, por padrão, todas as condições são testadas.

        PS> 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.

Para direcionar o Switch para parar de comparar após uma correspondência, use a instrução Break. A instrução Break finaliza a instrução Switch.

        PS> 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.

Se o valor de teste for uma coleção, como uma matriz, cada item na coleção é avaliado na ordem em que aparece. Os exemplos a seguir avaliam 4 e, em seguida, 2.

         PS> 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.

Qualquer instrução Break se aplica à coleção, não para cada valor, conforme mostrado no exemplo a seguir. A instrução Switch é encerrada pela instrução Break na condição de valor 4.

         PS> 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.

SINTAXE

A sintaxe completa da instrução Switch é a seguinte:

        switch [-regex|-wildcard|-exact][-casesensitive] (<value>)

ou

        switch [-regex|-wildcard|-exact][-casesensitive] -file filename

seguida por

        { 
            "string"|number|variable|{ expression } { statementlist }
            default { statementlist } 
        }

Se nenhum parâmetro for usado, Switch executa uma correspondência exata que diferencia maiúsculas e minúsculas para o valor. Se o valor for uma coleção, cada elemento é avaliado na ordem em que aparece.

A instrução Switch deve incluir pelo menos uma instrução da condição.

A cláusula Default é acionada quando o valor não corresponde a nenhuma das condições. É equivalente a uma cláusula Else, em uma instrução If. Somente uma cláusula Default é permitida em cada instrução Switch.

Switch tem os seguintes parâmetros:

Regex

Executa a correspondência de expressões regulares do valor para a condição. Se você usar Regex, Wildcard e Exact são ignorados. Além disso, se a cláusula de correspondência não for uma cadeia de caracteres, esse parâmetro é ignorado.

                           Example:
                           PS> switch ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               } 

                           PS> switch -Regex ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               }
                        That's too many.

Wildcard

Indica que a condição é uma cadeia de caracteres curinga. Se você usar Wildcard, Regex e Exact são ignorados. Além disso, se a cláusula de correspondência não for uma cadeia de caracteres, esse parâmetro é ignorado.

Exact

Indica que a cláusula de correspondência, se for uma cadeia de caracteres, deve corresponder exatamente. Se você usar Exact, Regex, Wildcard e Exact são ignorados. Além disso, se a cláusula de correspondência não for uma cadeia de caracteres, esse parâmetro é ignorado.

CaseSensitive

Realiza uma correspondência que diferencia maiúsculas de minúsculas. Se a cláusula de correspondência não for uma cadeia de caracteres, esse parâmetro é ignorado.

Arquivo

Pega a entrada de um arquivo em vez de uma instrução de valor. Se vários parâmetros File são incluídos, apenas o último será usado. Cada linha do arquivo é lida e avaliada pela instrução Switch.

São permitidas várias instâncias de Regex, Wildcard ou Exact. No entanto, apenas o último parâmetro usado é eficaz.

Se o valor corresponder a várias condições, a ação para cada condição é executada. Para alterar esse comportamento, use as palavras-chave Break ou Continue.

A palavra-chave Break interrompe o processamento e sai da instrução Switch.

A palavra-chave Continue continua processando o valor atual e quaisquer valores subsequentes.

Se a condição for uma expressão ou um bloco de script, ela será avaliado antes de ser comparada ao valor. O valor é atribuído à variável $_ automatic e está disponível na expressão. A correspondência será bem-sucedida se a expressão for verdadeira ou corresponder ao valor. A expressão é avaliada em seu próprio escopo.

A palavra-chave "Default" especifica uma condição que é avaliada somente quando nenhuma outra condição corresponder ao valor.

A ação para cada condição é independente das ações em outras condições. A chave de fechamento (}) na ação é uma interrupção explícita.

CONSULTE TAMBÉM

about_Break

about_Continue

about_If

about_Script_Blocks