Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
DESCRIÇÃO BREVE
Explica como usar uma opção para lidar com várias instruções If.
DESCRIÇÃO LONGA
Para verificar uma condição em um script ou função, use uma instrução If. A instrução If pode verificar muitos tipos de condições, incluindo o valor das variáveis e as propriedades dos objetos.
Para verificar várias condições, use uma instrução Switch. A Switch instrução é equivalente a uma série de instruções If, mas é mais simples. A instrução Switch lista cada condição e uma ação opcional. Se uma condição for obtida, a ação será executada.
A Switch instrução também usa a $switch variável automática. Para obter mais informações, confira about_Automatic_Variables.
Uma instrução Switch básica tem o seguinte formato:
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Por exemplo, a instrução a seguir Switch compara o valor de teste, 3, com cada uma das condições. Quando o valor do teste corresponde à condição, a ação é executada.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
Neste exemplo simples, o valor é comparado a cada condição na lista, mesmo que haja uma correspondência para o valor 3. A instrução Switch a seguir tem duas condições para um valor de 3. Ele demonstra que, por padrão, todas as condições são testadas.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
Para direcionar o Switch a parar de comparar após encontrar uma correspondência, use a instrução Break. A instrução Break encerra a instrução Switch.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Se o valor de teste for uma coleção, como uma matriz, cada item da coleção será avaliado na ordem em que ele aparece. Os exemplos a seguir avaliam 4 e, em seguida, 2.
switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
Todas as instruções Break se aplicam à coleção, não a cada valor, conforme mostrado no exemplo a seguir. A instrução Switch é encerrada pela instrução Break na condição do valor 4.
switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
Sintaxe
A sintaxe completa da instrução Switch é a seguinte:
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
ou
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Se nenhum parâmetro for usado, executará Switch uma correspondência exata sem distinção entre maiúsculas e minúsculas para o valor. Se o valor for uma coleção, cada elemento será avaliado na ordem em que ele aparece.
A instrução Switch deve incluir pelo menos uma instrução de condição.
A cláusula Default é disparada quando o valor não corresponde a nenhuma das condições. É equivalente a uma cláusula Else em uma instrução If. Somente uma cláusula Default é permitida em cada instrução Switch.
Switch tem os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
| Curinga | Indica que a condição é uma cadeia de caracteres curinga. |
| Se a cláusula match não for uma string, o parâmetro será | |
| Ignorado. | |
| Exato | Indica que a cláusula match, se for uma cadeia de caracteres, deve |
| correspondem exatamente. Se a cláusula match não for uma string, esse parâmetro | |
| é ignorado. | |
| CaseSensitive | Executa uma correspondência que diferencia maiúsculas de minúsculas. Se a cláusula de correspondência não for |
| uma string, esse parâmetro é ignorado. | |
| Arquivo | Recebe a entrada de um arquivo em vez de uma instrução de valor. Se |
| vários parâmetros de arquivo estão incluídos, apenas o último é | |
| usado. Cada linha do arquivo é lida e avaliada pelo | |
Switch declaração. |
|
| regex | Executa a correspondência de expressão regular do valor com o |
| condição. Se o | |
| match não é uma string, este parâmetro é ignorado. |
Observação
Ao especificar valores conflitantes, como Regex e curinga, o último parâmetro especificado tem precedência e todos os parâmetros conflitantes são ignorados. Várias instâncias de parâmetros também são permitidas. No entanto, apenas o último parâmetro usado é eficaz.
Neste exemplo, não há nenhum caso de correspondência, portanto, não há saída.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
Ao adicionar a cláusula Default, você pode executar uma ação quando nenhuma outra condição seja atendida.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
Default {
"No matches"
}
}
No matches
Para que a palavra "quatorze" corresponda a um caso, você deve usar o parâmetro -Wildcard ou -Regex.
PS> switch -Wildcard ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
That's too many.
O exemplo a seguir usa o parâmetro -Regex.
$target = 'user@contoso.com'
switch -Regex ($target)
{
'ftp\://.*' { "$_ is an ftp address"; Break }
'\w+@\w+\.com|edu|org' { "$_ is an email address"; Break }
'http[s]?\://.*' { "$_ is a web address"; Break }
}
user@contoso.com is an email address
Uma Switch condição de declaração pode ser:
- Uma expressão cujo valor é comparado ao valor de entrada
- Um bloco de script que deve retornar
$truese uma condição for atendida. O bloco de script recebe o objeto atual para comparar na$_variável automática e é avaliado em seu próprio escopo.
A ação para cada condição é independente das ações em outras condições.
O exemplo a seguir demonstra o uso de blocos de script como condições da instrução Switch.
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This executes as well"
}
}
Found a string
This executes as well
Se o valor corresponder a várias condições, a ação para cada condição será executada. Para alterar esse comportamento, use as palavras-chave Break ou Continue.
A palavra-chave Break encerra o processamento e sai da instrução Switch.
A palavra-chave Continue para de processar o valor atual, mas continua processando os valores subsequentes.
O exemplo a seguir processa uma matriz de números e exibe se eles são ímpares ou até mesmo. Números negativos são ignorados com a palavra-chave Continue. Se um valor não numérico for encontrado, a execução será encerrada com a palavra-chave Break.
switch (1,4,-1,3,"Hello",2,1)
{
{$_ -lt 0} { Continue }
{$_ -isnot [Int32]} { Break }
{$_ % 2} {
"$_ is Odd"
}
{-not ($_ % 2)} {
"$_ is Even"
}
}
1 is Odd
4 is Even
3 is Odd