about_Switch

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Switch

DESCRIPCIÓN BREVE

Explica cómo usar un modificador para controlar varias instrucciones If.

DESCRIPCIÓN LARGA

Para comprobar una condición en un script o una función, use una instrucción If. La instrucción If puede comprobar muchos tipos de condiciones, incluido el valor de las variables y las propiedades de los objetos.

Para comprobar varias condiciones, use una instrucción Switch. La instrucción Switch es equivalente a una serie de instrucciones If, pero es más sencilla. La instrucción Switch enumera cada condición y una acción opcional. Si se obtiene una condición, se realiza la acción.

Una instrucción Switch básica tiene el formato siguiente:

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

Por ejemplo, la siguiente instrucción Switch compara el valor de prueba 3 con cada una de las condiciones. Cuando el valor de prueba coincide con la condición, se realiza la acción.

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

En este sencillo ejemplo, el valor se compara con cada condición en la lista, incluso si hay una coincidencia con el valor 3. La siguiente instrucción Switch tiene dos condiciones para un valor de 3. Muestra que, de forma predeterminada, se prueban todas las condiciones.

        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 indicarle a la instrucción Switch que deje de comparar después de encontrar una coincidencia, use la instrucción Break. La instrucción Break termina la instrucción 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.

Si el valor de prueba es una colección, como una matriz, cada elemento de la colección se evalúa en el orden en el que aparece. En los ejemplos siguientes se evalúa 4 y, a continuación, 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.

Las instrucciones Break se aplican a la colección, no a cada valor, tal como se muestra en el ejemplo siguiente. La instrucción Break termina la instrucción Switch en la condición del 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.

SINTAXIS

La sintaxis completa de la instrucción Switch es la siguiente:

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

o

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

seguido de

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

Si no se usan parámetros, la instrucción Switch busca para el valor una coincidencia exacta que no distingue mayúsculas de minúsculas. Si el valor es una colección, cada elemento se evalúa en el orden en el que aparece.

La instrucción Switch debe incluir al menos una instrucción de condición.

La cláusula Default se desencadena cuando el valor no coincide con ninguna de las condiciones. Es equivalente a una cláusula Else en una instrucción If. Solo se permite una cláusula Default en cada instrucción Switch.

La instrucción Switch tiene los parámetros siguientes:

Regex

Busca coincidencias de expresiones regulares del valor con respecto a la condición. Si usa Regex, se omiten Wildcard y Exact. Además, si la cláusula de coincidencia no es una cadena, se omite este parámetro.

                           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 la condición es una cadena de caracteres comodín. Si usa Wildcard, se omiten Regex y Exact. Además, si la cláusula de coincidencia no es una cadena, se omite este parámetro.

Exact

Indica que la cláusula de coincidencia, si es una cadena, debe coincidir exactamente. Si usa Exact, se omiten Regex, Wildcard y Exact. Además, si la cláusula de coincidencia no es una cadena, se omite este parámetro.

CaseSensitive

Realiza una búsqueda de coincidencia que distingue mayúsculas de minúsculas. Si la cláusula de coincidencia no es una cadena, se omite este parámetro.

Archivo

Toma la entrada de un archivo, en lugar de tomarla de una instrucción de valor. Si se incluyen varios parámetros File, solo se usa el último. La instrucción Switch lee y evalúa cada línea del archivo.

Se permiten varias instancias de Regex, Wildcard o Exact. Sin embargo, solo es efectivo el último parámetro usado.

Si el valor coincide con varias condiciones, se ejecuta la acción de cada condición. Para cambiar este comportamiento, use las palabras clave Break o Continue.

La palabra clave Break detiene el procesamiento y sale de la instrucción Switch.

La palabra clave Continue sigue procesando el valor actual y los valores posteriores.

Si la condición es una expresión o un bloque de script, se evalúa justo antes de compararla con el valor. El valor se asigna a la variable automática $_ y está disponible en la expresión. Si la expresión es True o coincide con el valor, se produce la coincidencia. La expresión se evalúa en su propio ámbito.

La palabra clave "Default" especifica una condición que solo se evalúa si ninguna otra condición coincide con el valor.

La acción de cada condición es independiente de las acciones de las demás condiciones. La llave de cierre (}) de la acción es un salto explícito.

VEA TAMBIÉN

about_Break

about_Continue

about_If

about_Script_Blocks