Examinar e usar o constructo Switch nos scripts do Windows PowerShell
O construto Switch é semelhante a um construto If que possui várias seções ElseIf. O constructo Switch avalia uma única variável ou item em comparação com vários valores e tem um bloco de script para cada valor. O bloco de script para cada valor será executado se esse valor corresponder à variável. Há também uma seção Padrão, que é executada somente se não houver correspondências.
O constructo Switch usa a seguinte sintaxe:
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" }
}
Além dos valores correspondentes, o construto Switch também pode corresponder a padrões. Você pode usar o -Wildcard parâmetro para executar a correspondência de padrões usando a mesma sintaxe que o -like operador. Como alternativa, você pode usar o -Regex parâmetro para corresponder usando expressões regulares.
Quando você usa correspondência de padrões, várias correspondências são possíveis. Quando há várias correspondências, todos os blocos de script padrão correspondentes são executados. Isso é diferente de um constructo If no qual apenas um bloco de script é executado.
O exemplo a seguir usa correspondência de padrões:
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 valores de $ip nas redes de Londres ou Vancouver, duas mensagens serão exibidas. Se $ip incluir um endereço IP na rede 10.x.x.x, as mensagens indicarão que o computador está na rede interna e que o computador está em Londres ou Vancouver. Se $ip não for um endereço IP na rede 10.x.x.x, a mensagem indicará que ele não está na rede interna.
Se você fornecer vários valores em uma matriz para um constructo Switch, cada item na matriz será avaliado. No exemplo anterior, se a variável $ip fosse uma matriz com dois endereços IP, ambos os endereços IP seriam processados e as ações apropriadas seriam executadas para cada item.