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 manipular várias instruções If.
DESCRIÇÃO LONGA
Para marcar uma condição em um script ou função, use uma instrução If
. A If
instrução pode marcar muitos tipos de condições, incluindo o valor de variáveis e as propriedades dos objetos.
Para marcar várias condições, use uma Switch
instrução . A Switch
instrução é equivalente a uma série de instruções If, mas é mais simples. A Switch
instrução 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 básica Switch
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 de 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 a seguir Switch
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
para parar de comparar após uma correspondência, use a Break
instrução . A Break
instrução encerra a Switch
instrução .
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 na 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 Break
as instruções se aplicam à coleção, não a cada valor, conforme mostrado no exemplo a seguir. A Switch
instrução é 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.
Syntax
A sintaxe completa Switch
da instrução é 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, Switch
executará uma correspondência exata que não diferencia maiúsculas de minúsculas para o valor. Se o valor for uma coleção, cada elemento será avaliado na ordem em que ele aparece.
A Switch
instrução deve incluir pelo menos uma instrução de condição.
A Default
cláusula é disparada quando o valor não corresponde a nenhuma das condições. É equivalente a uma Else
cláusula em uma instrução If
. Somente uma Default
cláusula é permitida em cada Switch
instrução.
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 cadeia de caracteres, 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 cadeia de caracteres, esse parâmetro | |
é ignorado. | |
CaseSensitive | Executa uma correspondência que diferencia maiúsculas de minúsculas. Se a cláusula match não for |
uma cadeia de caracteres, esse parâmetro é ignorado. | |
Arquivo | Obtém a entrada de um arquivo em vez de uma instrução value. If |
vários parâmetros de arquivo estão incluídos, apenas o último é | |
usados. Cada linha do arquivo é lida e avaliada pelo | |
Instrução Switch . |
|
Regex | Executa a correspondência de expressões regulares do valor com o |
condition. Se a opção | |
A cláusula match não é uma cadeia de caracteres, esse 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, somente o último parâmetro usado é eficaz.
Neste exemplo, não há nenhum caso correspondente, 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 Default
cláusula , você pode executar uma ação quando nenhuma outra condição for bem-sucedida.
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 -Wildcard
parâmetro 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 -Regex
parâmetro .
$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 instrução pode ser:
- Uma expressão cujo valor é comparado com o valor de entrada
- Um bloco de script que deve retornar
$true
se uma condição for atendida. O bloco de script recebe o objeto atual a ser comparado 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 Switch
condições de instrução.
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 Break
palavras-chave ou Continue
.
O Break
palavra-chave interrompe o processamento e sai da Switch
instrução .
O Continue
palavra-chave 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 o Continue
palavra-chave. Se um não número for encontrado, a execução será encerrada com o Break
palavra-chave.
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