Articles

Interruptor de Caso en PowerShell

Interruptor de Caso en PowerShell
Interruptor de Caso en PowerShell

Introducción a Cambiar en Caso de PowerShell

la función de Interruptor en PowerShell se utiliza para manejar múltiples sentencias o en otros términos es la sustitución de varias condiciones If/Else If/Else. Para verificar una sola condición en Script o Función, puede usar la instrucción If/else, pero si desea evaluar más instrucciones IF, use Switch.El conmutador

es mejor comparado con múltiples sentencias If y fácil de implementar y de usar para codificar. Hay múltiples condiciones bajo cada instrucción y cuando una de ellas satisface, se realiza la acción.

Iniciar Sus Datos Libre Curso de Ciencia de la

Hadoop, Ciencia de Datos, Estadística & otros

la Sintaxis de:

Switch (<Value>)
{
<Condition1> {Action1}
<Condition2> {Action2}
}

Completo de la Sintaxis:

Switch ( <value> ) {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}

O

Switch -file {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}

Parámetros del Interruptor en Caso de PowerShell

  • Regex: También se le llama Expresión Regular. Realiza la comprobación de expresiones regulares con el valor de la condición. Si utiliza expresiones regulares, se ignoran los caracteres comodín y los Exactos. Además, si la cláusula match no es una cadena, este parámetro se ignora.
  • Comodín: Indica que la condición es una cadena comodín. Si usa comodín, Expresiones regulares y Exactos se ignoran. Además, si la cláusula match no es una cadena, este parámetro se ignora.
  • Exacto: Realiza la coincidencia con la cadena exacta. Si utiliza Exact, el comodín y la expresión regular se ignoran y si la cláusula match no es una cadena, este parámetro se ignora.
  • CaseSensitive: Este parámetro comprobará la condición que coincide exactamente con el Valor pasado (distingue entre mayúsculas y minúsculas) si no coincide, este parámetro se ignora. También necesita un valor de cadena.
  • Archivo: Toma la ruta del archivo como un valor de entrada en lugar de un valor de cadena. Si se pasan varios parámetros de archivo, solo toma el último. Cada línea del archivo se lee y evalúa en función de la condición y, si la condición coincide, ejecuta ese valor o muestra un mensaje escrito.

Diagrama de flujo

Diagrama de flujo

Diagrama de flujo

¿Cómo Cambiar Trabaja en PowerShell?

Como se muestra en la parte superior del diagrama, siempre que cualquier valor (cadena, Entero, flotante u otros tipos de datos), matriz, comodines, archivos, etc. se pasa entonces comienza a hacer coincidir las condiciones una por una y cuando las condiciones coinciden, el script ejecuta ese bloque. Para múltiples valores coincidentes, se ejecutarán bloques de scripts múltiples y si no se encuentra ningún valor coincidente y si se especifica una condición predeterminada, se ejecutará ese bloque, de lo contrario, habrá salida nula.

Ejemplos de Caso del Switch en PowerShell

veamos el ejemplo:

Ejemplo# 1

1. Función de conmutación simple con cadena, valor entero pasado.

Código:

switch (3) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}

Salida:

powershell 1

powershell 1

Código:

switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}

Salida:

powershell 2

powershell 2

Ahora, ¿qué pasa si el parámetro no coincide con la expresión. Como ejemplo que se muestra a continuación, 5 no coincide con ninguno de los casos de conmutación. En este caso, la salida será nula.

Código:

switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}

Para superar el problema anterior, el bloque predeterminado debe especificarse y ejecutarse cuando ninguno de los parámetros coincide.

Código:

switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
default{"No Match Found"}
}

Salida:

powershell 3

powershell 3

Ejemplo# 2

veamos el ejemplo:

la Diferencia entre if / else if /else y Switch. En el siguiente ejemplo, puede comprender cómo es fácil escribir un script con la función Switch.

Código:

$time = 3
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}

$time = 3
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}

Output:

powershell 4

powershell 4

Execution time for both the methods.

Code:

$time = 3
Measure-Command {
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}
}

TotalMilliseconds :

TotalMilliseconds

TotalMilliseconds

Code:

$time = 3
Measure-Command {
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}
}

TotalMilliseconds:

powershell21

powershell21

Diferencia: 31,3154 milisegundos

Esta diferencia se vuelve enorme cuando se escriben secuencias de comandos o funciones masivas dentro del conmutador.

1. Switch con parámetro Regex

Si se menciona Regex en switch, evalúa la expresión con el valor pasado y si parte de la condición coincide, ejecuta esa operación.

Considere el siguiente ejemplo.

Código:

Switch ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}

Salida:

powershell 5

powershell 5

Después de la adición de Expresiones regulares.

Código:

Switch -Regex ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}

Resultado:

powershell 6

powershell 6

2. Cambiar con el parámetro Comodín

El comodín funciona de forma similar al parámetro Like.

Código:

$msg = "Error, WMI connection failed"
Switch -Wildcard ($msg) {
"Error*" {"WMI Error"}
"Warning*" {"WMI Warning"}
"Successful*" {"WMI Connection Successful"}
}

Resultado:

powershell 7PNG

powershell 7PNG

3. Conmutador con parámetro exacto

La función exacta es predeterminada en el conmutador. No importa si lo usas o no. Pero cuando se utilizan dos parámetros al mismo tiempo, el último parámetro tiene prioridad.

Código:

Switch -Regex -Exact ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}

Resultado:

powershell 8PNG

powershell 8PNG

Código:

Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}

Resultado:

powershell 9PNG

powershell 9PNG

4. Conmutador con parámetro de archivo

Puede proporcionar una ruta de archivo directamente al Conmutador como parámetro. Puede usar Archivo con una ruta de acceso a un archivo en lugar de darle una expresión variable.

Código:

Switch -Wildcard -File C:\temp\switchtest.txt {
"*Warning*"{Write-Warning $PSItem}
"*Error*"{Write-Error $PSItem}
}

Resultado:

switchcase en powershell. 2PNG

caja de conmutación en powershell. 2PNG

Puede usar $PSItem o $_ para trabajar con elementos actuales.

5. Interruptor con CaseSensitive parámetro

Cuando se utiliza un Casesensitive parámetro en un interruptor, entonces la condición que tiene que coincidir exactamente por cada personaje.

Código:

switch -CaseSensitive ("Hello") {
"HeLlo" {"This is different HeLlo"}
Default {"This is not Matching"}
}

Resultado:

powershell 10PNG

powershell 10PNG

6. La Matriz de pasar el Valor a la función de interruptor

Matriz Simple :

switch (10,12) {
9 { "Nine" }
10 { "Ten" }
11 {"Eleven"}
12 {"Twelve"}
Default {"None"}
}

Salida:

matriz de pasar

matriz de pasar

la Matriz de Pasar el Objeto

Código:

$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {"VM Delete Operation"}
"VM_Create" {"VM Create Operation"}
"VM_Shutdown" {"VM Shutdown Operation"}
}

Resultado:

powershell 12PNG

powershell 12PNG

7. Condición de interrupción

Cuando se especifica la condición de interrupción, la operación se interrumpe en ese bucle y no se puede continuar con la ejecución. Esto es bastante útil cuando no desea verificar pasos adicionales cuando la condición cumple y el tiempo de ejecución se vuelve más rápido.

Código:

$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {
"VM Delete Operation"
break }
"VM_Create" {
"VM Create Operation"
break}
"VM_Shutdown" {
"VM Shutdown Operation"
break
}
}

Salida:

breakcondition

breakcondition

Si usted nota, sólo hay un bloque ejecutado y, a continuación, sale de la función de interruptor.

8. Condición Continuar

El parámetro Continuar se usa para omitir la iteración en particular. Por ejemplo, si hay 3 elementos para coincidir, se ejecutará primero y cuando la condición coincida, saltará otros pasos y pasará al siguiente paso.

Código:

switch ('Hello') {
"hello" {'First Block Executes'
continue}
'HELLO' {'Second Block Executes'
continue }
'HeLLo' {'Third Block Exectues'
continue }
Default {'Nothing executed'}
}

Salida:

condición de continuación

condición de continuación

Como puede ver, solo se pasa un argumento (‘Hola’), ejecuta el primer bloque solo porque la expresión coincide y no queda ningún otro argumento por ejecutar, el script terminará.

  • Un ejemplo mixto más de break and continue con Switch.

Código:

switch ('Alpha','Beta','Delta') {
"Alpha" {'First Block Executes'
continue}
'Beta' {'Second Block Executes'
break }
'Delta' {'This will not Execute'}
}

Salida:

powershell 15PNG

powershell 15PNG

Conclusión

En general, Switch es mucho mejor que implementar múltiples condiciones If y proporciona más funcionalidad y reducción del tiempo de ejecución.

Artículos recomendados

Esta ha sido una guía para Cambiar de caso en PowerShell. Aquí también analizamos la sintaxis, los parámetros y los ejemplos de mayúsculas y minúsculas en Powershell. También puede echar un vistazo a los siguientes artículos para obtener más información:

  1. ¿Qué es el script de Shell?
  2. Comandos de PowerShell
  3. PowerShell Operadores
  4. Utiliza De Powershell
  5. Guía de la Matriz en PowerShell con Ejemplos
  6. Ejemplos de Regex en PowerShell
  7. Guía Completa de la Función en los Shell Scripts
  8. Aprender el Eco en los Shell Scripts
  9. Ejemplos de Caso del Switch en Shell Scripting
  10. Python Interruptor de Caso | Cómo Implementar?
3 Acciones