Revisión y uso de la construcción Switch en scripts de Windows PowerShell
La construcción Switch es similar a una construcción If con varias secciones ElseIf. La construcción Switch evalúa una sola variable o elemento con varios valores y tiene un bloque de script para cada valor. El bloque de script para cada valor se ejecuta si ese valor coincide con la variable. También hay una sección Default que se ejecuta solo si no hay coincidencias.
La construcción Switch usa la sintaxis siguiente:
Switch ($choice) {
1 { Write-Host "You selected menu item 1" }
2 { Write-Host "You selected menu item 2" }
3 { Write-Host "You selected menu item 3" }
Default { Write-Host "You did not select a valid option" }
}
Además de los valores coincidentes, la construcción Switch también se puede usar para buscar coincidencias con patrones. Puede usar el parámetro -wildcard para realizar la coincidencia de patrones mediante la misma sintaxis que el operador -like. Como alternativa, puede usar el parámetro -regex para realizar la coincidencia mediante expresiones regulares.
Es importante tener en cuenta que, al usar la coincidencia de patrones, se pueden dar varias coincidencias. Cuando hay múltiples coincidencias, se ejecutan los bloques de script para todos los patrones coincidentes. Esto difiere de la construcción If, en la que solo se ejecuta un bloque de script.
En el ejemplo siguiente se usa la coincidencia de patrones:
Switch -WildCard ($ip) {
"10.*" { Write-Host "This computer is on the internal network" }
"10.1.*" { Write-Host "This computer is in London" }
"10.2.*" { Write-Host "This computer is in Vancouver" }
Default { Write-Host "This computer is not on the internal network" }
}
Para los valores de $ip en las redes de Londres o Vancouver, se mostrarán dos mensajes. Si $ip incluye una dirección IP en la red 10.x.x.x, los mensajes indicarán que el equipo está en la red interna y se encuentra o en Londres o en Vancouver. Si $ip no es una dirección IP en la red 10.x.x.x, el mensaje indicará que no se encuentra en la red interna.
Si proporciona varios valores en una matriz para una construcción Switch, se evalúa cada elemento de la matriz. En el ejemplo anterior, si la variable $ip era una matriz con dos direcciones IP, se procesarían ambas. Se tomarán las medidas adecuadas para cada elemento de la matriz.