Articles

Interruptor de Caso no PowerShell

Alternar Caso em PowerShell

Alternar Caso em PowerShell

Introdução para Alternar Caso em PowerShell

Alternar a função no PowerShell é usado para tratar várias declarações ou em outros termos, é a substituição de várias condições de If/Else If/Else. Para verificar uma única condição no Script ou função, você pode usar se/else Declaração, mas se você quiser avaliar mais se as declarações, em seguida, usar Switch.

Switch é melhor comparar com múltiplas declarações If e fácil de implementar e uso simples para codificação. Existem várias condições sob cada declaração e quando uma delas satisfaz então a ação é realizada.

Iniciar Sua Livre de Dados do Curso de Ciência

Hadoop, de Ciência de Dados, Estatísticas & outros

Sintaxe:

Switch (<Value>)
{
<Condition1> {Action1}
<Condition2> {Action2}
}

Total de Sintaxe:

Switch ( <value> ) {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}

OU

Switch -file {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}

Parâmetros de Mudar Caso em PowerShell

  • Regex: Ele também é chamado de Expressão Regular. Executa a verificação da expressão Regular contra o valor da condição. Se você usar a Regex, WildCard e Exacts são ignorados. Além disso, se a cláusula de correspondência não é uma string, então este parâmetro é ignorado.
  • Wildcard: indica que a condição é um texto de caracteres especiais. Se você usar Wildcard, Regex, e Exacts são ignorados. Além disso, se a cláusula de correspondência não é uma string, então este parâmetro é ignorado.
  • EXACTO: efectua a correspondência com o texto EXACTO. Se você usar exatos, Wildcard e Regex são ignorados e se a cláusula de correspondência não é uma string, então este parâmetro é ignorado.
  • CaseSensitive: este parâmetro irá verificar a condição que corresponde exactamente com o valor passado (sensível à capitalização) se não corresponder, então este parâmetro é ignorado. Ele também precisa de um valor string.
  • File: toma a localização do ficheiro como um valor de entrada em vez de um valor de cadeia de caracteres. Se vários parâmetros de arquivo são passados, ele leva apenas o último. Cada linha do arquivo é lida e avaliada contra a condição e se a condição corresponde, então ele executa esse valor ou exibe uma mensagem escrita.

Flowchart

Flowchart

Flowchart

como funciona o Switch em PowerShell?

como mostrado acima do diagrama, sempre que qualquer valor (string, inteiro, float ou outros tipos de dados), array, wildcards, arquivos, etc. é passado, então ele começa a corresponder as condições um por um e quando a condição corresponde, o script executa esse bloco. Para vários valores correspondentes, vários blocos de scrips serão executados e se nenhum valor correspondente for encontrado e se a condição padrão for especificada, então ele executa esse bloco caso contrário, há saída nula.

exemplos de casos de Switch em PowerShell

vamos ver o exemplo dado:

exemplo# 1

1. Função de comutação simples com string, o valor inteiro passou.

Código:

switch (3) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}

Saída:

powershell 1

powershell 1

Código:

switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}

Resultado:

powershell 2

powershell 2

Agora, se o parâmetro não corresponde à expressão. Como um exemplo dado abaixo, 5 não coincide com nenhum dos casos Switch. Neste caso, a saída será nula.Código:

switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}

para superar o problema acima, o padrão Precisa especificar e o bloco padrão executa quando nenhum dos parâmetros corresponde.

Código:

switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
default{"No Match Found"}
}

Resultado:

powershell 3

powershell 3

Exemplo 2

Vamos ver o exemplo dado:

a Diferença entre se / else if /else e Switch. A partir do exemplo abaixo, você pode entender como é fácil escrever um script com a função Switch.Código:

$time = 3
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}

$time = 3
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}

Output:

powershell 4

powershell 4

Execution time for both the methods.

Code:

$time = 3
Measure-Command {
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}
}

TotalMilliseconds :

TotalMilliseconds

TotalMilliseconds

Code:

$time = 3
Measure-Command {
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}
}

TotalMilliseconds:

powershell21

powershell21

Diferença: 31.3154 milissegundos

Esta diferença torna-se grande quando você escreve enorme de scripts ou funções dentro do switch.1. Switch com o parâmetro Regex

Se Regex é mencionado em switch, ele avalia a expressão com valor passado e se parte da condição corresponde então ele executa essa operação.

considere o exemplo abaixo.

Código:

Switch ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}

Saída:

powershell 5

powershell 5

Depois de adicionar Regex.

Código:

Switch -Regex ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}

Saída:

powershell 6

powershell 6

2. Alternar com o parâmetro de caracteres especiais

caracteres especiais funciona de forma semelhante ao parâmetro semelhante.

Código:

$msg = "Error, WMI connection failed"
Switch -Wildcard ($msg) {
"Error*" {"WMI Error"}
"Warning*" {"WMI Warning"}
"Successful*" {"WMI Connection Successful"}
}

Saída:

powershell 7PNG

powershell 7PNG

3. Switch com o parâmetro exato

a função exata é padrão na Switch. Não importa se o usas ou não. Mas quando você usa dois parâmetros ao mesmo tempo, então o último parâmetro tem precedência.

Código:

Switch -Regex -Exact ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}

Saída:

powershell 8PNG

powershell 8PNG

Código:

Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}

Saída:

powershell 9PNG

powershell 9PNG

4. Alternar com o parâmetro de arquivo

Você pode fornecer um caminho de arquivo diretamente para o interruptor como um parâmetro. Você pode usar arquivo com um caminho para um arquivo em vez de dar-lhe uma expressão variável.

Código:

Switch -Wildcard -File C:\temp\switchtest.txt {
"*Warning*"{Write-Warning $PSItem}
"*Error*"{Write-Error $PSItem}
}

Saída:

switchcase no powershell. 2PNG

switchcase in powershell. 2PNG

pode usar $PSItem ou $_ para trabalhar com os itens actuais.5. Alternar com o parâmetro CaseSensitive

Quando você usa um parâmetro Casesensitive em um interruptor, então a condição tem que corresponder exatamente por cada caractere.

Código:

switch -CaseSensitive ("Hello") {
"HeLlo" {"This is different HeLlo"}
Default {"This is not Matching"}
}

Saída:

powershell 10PNG

powershell 10PNG

6. Matriz de passagem de Valor para a função switch

Matriz Simples :

switch (10,12) {
9 { "Nine" }
10 { "Ten" }
11 {"Eleven"}
12 {"Twelve"}
Default {"None"}
}

Resultado:

matriz de passagem

matriz de passagem

Matriz de Passagem de Objeto

Código:

$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {"VM Delete Operation"}
"VM_Create" {"VM Create Operation"}
"VM_Shutdown" {"VM Shutdown Operation"}
}

Saída:

powershell 12PNG

powershell 12PNG

7. Condição de quebra

Quando você especificar a condição de quebra, então a operação quebra esse laço e não pode continuar a execução. Isto é muito útil quando você não quer verificar mais passos quando a condição satisfaz e o tempo de execução se torna mais rápido.

Código:

$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {
"VM Delete Operation"
break }
"VM_Create" {
"VM Create Operation"
break}
"VM_Shutdown" {
"VM Shutdown Operation"
break
}
}

Saída:

breakcondition

breakcondition

Se você notar, há apenas um bloco executado e, em seguida, ele sai do interruptor de função.8. Continuar a condição

continuar o parâmetro é usado para saltar a iteração particular. Por exemplo, se houver 3 itens para combinar, então ele irá executar primeiro e quando a condição corresponder, então ele irá saltar outros passos e mover para o próximo passo.

Código:

switch ('Hello') {
"hello" {'First Block Executes'
continue}
'HELLO' {'Second Block Executes'
continue }
'HeLLo' {'Third Block Exectues'
continue }
Default {'Nothing executed'}
}

Saída:

continuar a condição

continuar a condição

Como você pode ver, há apenas um argumento passado (‘Olá’), executa o primeiro bloco só porque a expressão é de correspondência e não há nenhum outro argumento para a esquerda para executar o script final.

  • Mais um exemplo misto de interrupção e continuar com o interruptor.

Código:

switch ('Alpha','Beta','Delta') {
"Alpha" {'First Block Executes'
continue}
'Beta' {'Second Block Executes'
break }
'Delta' {'This will not Execute'}
}

Saída:

powershell 15PNG

powershell 15PNG

Conclusão

ao Todo, Mudar é muito melhor do que a implementação de várias condições e fornece mais funcionalidade e redução no tempo de execução.

artigos recomendados

este tem sido um guia para mudar o caso em PowerShell. Aqui também discutimos a sintaxe, parâmetros e exemplos de switch case em Powershell. Você também pode dar uma olhada nos seguintes artigos para aprender mais-

  1. O que é Shell Scripting?
  2. Comandos do PowerShell
  3. PowerShell Operadores
  4. Utiliza Do Powershell
  5. Guia para a Matriz no PowerShell com Exemplos
  6. Exemplos de expressões regulares em PowerShell
  7. Guia Completo para a Função em Shell Script
  8. Saiba o Eco em Shell Script
  9. Exemplos de Mudar Caso em Shell Script
  10. Python Interruptor de Caso | Como Implementar?
3 Acções