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
¿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:
Código:
switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}
Salida:
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:
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:
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 :
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:
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:
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:
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:
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:
Código:
Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
Resultado:
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:
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:
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:
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:
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:
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:
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:
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:
- ¿Qué es el script de Shell?
- Comandos de PowerShell
- PowerShell Operadores
- Utiliza De Powershell
- Guía de la Matriz en PowerShell con Ejemplos
- Ejemplos de Regex en PowerShell
- Guía Completa de la Función en los Shell Scripts
- Aprender el Eco en los Shell Scripts
- Ejemplos de Caso del Switch en Shell Scripting
- Python Interruptor de Caso | Cómo Implementar?
Leave a Reply