Cambio de uso de declaración – informaticamadridmayor

Por lo general, se usa una construcción if-else para probar las condiciones en los scripts de PowerShell. Si necesita verificar inmediatamente varias condiciones en lugar de hacer construcciones complejas con if-else, es mucho más fácil usar el cambiar declaración.

La sintaxis de la construcción con el Cambiar El operador se parece a lo siguiente:

Switch -options (value) { 
Pattern 1 {action1} 
Pattern 2 {action2} 
Pattern x {action3}
default { defaultaction}}

La instrucción Switch compara el valor de cada elemento a su vez con cada condición (patrón) y, si coincide, realiza la acción especificada para esta condición.

PowerShell: Operador de interruptores

Veamos un ejemplo de un script de PowerShell simple que compara el valor de la variable var1 con uno de los siguientes valores.

$var1 = 2
Switch ($var1) { 
1 {write-host ″Action one″} 
2 {write-host ″Action two″} 
3 {write-host ″Action three″} 
}

En este ejemplo, el valor de la variable var1 coincide con la segunda condición, por lo que se muestra la ″Acción dos″.

En el ejemplo anterior, si el valor de $var1 = 0, la instrucción Switch no realiza ninguna acción. Puede crear una acción predeterminada que se aplique cuando no se cumpla ninguna de las condiciones. Para hacer esto, use el Defecto llave.

$var1 = 0
Switch ($var1) { 
1 {write-host ″Action one″} 
2 {write-host ″Action two″} 
3 {write-host ″Action three″}
Default {″No action″; exit}
}

La instrucción Switch verifica secuencialmente todas las condiciones. Si después de una coincidencia con una condición desea abandonar la estructura Cambiar, use el Romper operador.

Por ejemplo:

1 {write-host ″Action one″;break}

Puede verificar el valor de un determinado objeto usando la instrucción Switch. Por ejemplo, verifique el estado del servicio del Cliente DNS usando el cmdlet Obtener servicio, y si el servicio se detiene, lo iniciaremos. Si el servicio está en estado Detenido, el script lo reiniciará (deja que sea la acción predeterminada).

switch (Get-Service | where {$_.name -eq 'Dnscache'})
{
{$_.status -eq 'Running'} {'DNS client service is running'}
{$_.status -eq 'Stopped'} {'DNS client service is stopped'; Start-Service Dnscache }
Default { Restart-Service Dnscache; {'DNS client service restarting' }; exit}
}

Una de las características más útiles de la instrucción switch es la capacidad integrada de trabajar con expresiones regulares con la tecla -regexp.

Por ejemplo, usando una expresión regular, puede verificar que la siguiente línea comience o termine con un carácter específico:

switch -regex ("theitbros")
{
'^t' { "Begins with t" }
's$' { "ends with s" }
'^a' { "Begins with a" }
}
Begins with t
ends with s

ejemplo de interruptor powershell

También en los scripts, los siguientes parámetros de declaración de cambio de PowerShell pueden ser útiles:

  • Comodín — puede utilizar comodines en la expresión (*,?, [asd]);
  • Exacto — comparación exacta, insensible a mayúsculas y minúsculas, de la cadena;
  • Distingue mayúsculas y minúsculas — la verificación de mayúsculas y minúsculas (si la condición no es una cadena, este parámetro se ignora);
  • Archivo — los datos de entrada se toman de un archivo. Por ejemplo:
switch -file c:pstest.txt
{
'cat' {write-host 'I found a cat'}
'dog' { write-host 'I found a dog'}
'bird'{ write-host 'I found a bird'}
Default {write-host ‘nothing found’}
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *