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 verificar uma condição em um script ou uma função, use uma If instrução. A If instrução pode verificar muitos tipos de condições, incluindo o valor de variáveis e as propriedades de objetos.
Para verificar 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, consulte about_Automatic_Variables.
Uma Switch instrução 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, para 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 aparece. Os exemplos a seguir avaliam 4 e depois 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 Break instruções se aplicam à coleção, não a cada valor, conforme mostrado no exemplo a seguir. A Switch instrução é encerrada pela Break instrução 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 Switch sintaxe de instrução completa é 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 o 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 If instrução. Somente uma Default cláusula é permitida em cada Switch instrução.
Switchtem os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
| Amplia | 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á | |
| aceita. | |
| Exato | Indica que a cláusula Match, se for uma cadeia de caracteres, deve |
| corresponder 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. Se |
| vários parâmetros de arquivo estão incluídos, somente o último é | |
| usados. Cada linha do arquivo é lida e avaliada pelo | |
Switchprivacidade. |
|
| Regex | Executa a correspondência de expressão regular do valor para o |
| problema. 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 wildcard, o último parâmetro especificado tem precedência e todos os parâmetros conflitantes são ignorados. Também são permitidas várias instâncias de parâmetros. No entanto, apenas o último parâmetro usado é efetivo.
Neste exemplo, não há nenhum caso correspondente, portanto, não há nenhuma 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 realizada com sucesso.
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 a palavra "quatorze" corresponder a um caso, você deve usar -Wildcard o -Regex parâmetro ou.
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 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 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 Continue palavras-chave ou.
A Break palavra-chave interrompe o processamento e sai da Switch instrução.
A Continue palavra-chave para o processamento do valor atual, mas continua processando quaisquer 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 Continue palavra-chave. Se um número não-numérico for encontrado, a execução será encerrada com a 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