Examinar e usar o constructo Switch nos scripts do Windows PowerShell

Concluído

O constructo Switch é semelhante a um constructo If que com 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 constructo Switch também pode ser usado para corresponder padrões. Você pode usar o parâmetro -wildcard para executar a correspondência de padrões usando a mesma sintaxe usada pelo operador -like. Como alternativa, você pode usar o parâmetro -regex para executar a correspondência usando expressões regulares.

É importante estar ciente de que, quando você usa padrões correspondentes, várias correspondências são possíveis. Quando há várias correspondências, os blocos de script para todos os padrões correspondentes são executados. Isso é diferente de um constructo If, no qual apenas um bloco de script é executado.

O exemplo a seguir usa padrões correspondentes:

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 das redes de $ip 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. As ações apropriadas para cada item na matriz seriam executadas.