El comando switch de powershell nos permite manejar múltiples estados de cuenta de una variable. Al igual que en otros lenguajes de programación, la sentencia Switch nos sirve para realizar diferentes acciones frente a varios valores predefinidos de una variable y uno por defecto. En resumen, es una secuencia de condicionales para una variable. A continuación te mostraré las formas en las que puedes escribir un comando switch en powershell.

Switch Powershell: Sintaxis breve

switch ($item) {
valor { expresión }
valor { expresión }
}

Sintaxis completa

switch [ -regex | -wildcard | -exact ][-casesensitive ] (pipeline){
"string" | número | variable | { expresión } { lista de declaraciones }
[ default { statementlist } ]
}

Switch [ -regex | -wildcard | -exact |[-casesensitive] -file filename] {
"string" | número | variable | { expresión } { lista de declaraciones }
[default { statementlist } ]
}

Sintaxis de un condicional SWITCH en windows Powershell Scripting

Clave para comprender la sentencia Switch en PowerShell

Tratar la cláusula de coincidencia, si es una cadena, como una Regex.

default Esto proporciona una opción ‘catch-all’ para cualquier elemento de datos que no se trate explícitamente en el fichero
lista de sentencias de cambio. Añada ‘default {statementlist}’ como última opción.
El ‘default’ sólo se utilizará si no se encuentra ninguna otra coincidencia para las condiciones explícitas.

Wildcard o Caracteres comodín

Tratar la cláusula de coincidencia, si es una cadena, como una cadena de caracteres comodín

  • ?            > Sustituye a UN caracterer, que puede ser cualquier carácter único no especificado.
  • *             >  Responde a cualquier tipo de número y combinación. (Con «.*» Seleccionariamos todos los tipos de formatos de fichero existentes)
  • [a-b]       > Cualquier carácter en el rango a-b
  • [ab]        > Los caracteres especificados. La coincidencia de comodines no distingue entre mayúsculas y minúsculas
  • -exact    > Coincidir exactamente con las cadenas (deshabilitar comodines)
  • -casesensitive       > Modificar la cláusula de coincidencia, si es una cadena, para que sea sensible a mayúsculas y minúsculas.
  • -file        > Toma como datos de entrada los indicados en el fichero que pasemos en ésta variable.

Las opciones de conmutación se pueden dar en formato abreviado usando la primera letra, por lo que -e es equivalente a -exacto.

La ruptura de palabra clave indica que no se producirá ningún otro procesamiento y que la sentencia switch saldrá.

La palabra clave «continuar» indica que no se continuará el procesamiento con respecto al token actual y que se evaluará el siguiente token del condicional. Si no hay tokens disponibles, la sentencia switch saldrá.

Si la tubería resulta en un arreglo, cada elemento del arreglo será evaluado en orden ascendente de desplazamiento (comenzando en 0). Debe haber al menos un elemento presente que cumpla al menos una condición o se producirá un error.

Ejemplos del comando Switch para Powershell

Comparar una cadena, es decir, una cadena de sentencias IF:
$my_variable = "naranja"

($my_variable) {
"manzana" {"Primer resultado"; break}
"Pera" {"Segundo resultado"; break}
"Naranja" {"Tercer resultado"; break}
"melocotón" {"Cuarto resultado"; break}
"banana" {"Quinto resultado"; break}
default {"Something else happened"; break}
}

La ruptura al final de cada condición le dice al switch que deje de buscar más allá, si omite esto, la sentencia switch teóricamente puede coincidir con más de una cláusula y realizar más de una acción, esto sólo es probable que suceda si se está usando un comodín.

Cuando se ha excluido la pausa, puede ser útil añadir un comentario # FALLTHROUGH para indicar que se realizarán más pruebas.

$departamento = "ventas"
switch($departamento) {
"HR" {echo "HR found"; break} ##Sentencia en una línea
"ventas" { ##Sentencia con salto de línea
echo " .... coincidencia exacta .... "
# FALLTHROUGH
} "*ventas*" {
echo " .... coincidencia de caracteres comodín .... "
break ##Utilizamos break para la interrupción de la acción
}
}

«La historia nos enseña que los hombres y las naciones se comportan sabiamente una vez que han agotado todas las demás alternativas» ~ Abba Eban

Comandos PowerShell relacionados