Interruptor de Caso no 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
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:
Código:
switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}
Resultado:
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:
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:
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 :
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:
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:
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:
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:
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:
Código:
Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
Saída:
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:
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:
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 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:
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:
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:
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:
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-
- O que é Shell Scripting?
- Comandos do PowerShell
- PowerShell Operadores
- Utiliza Do Powershell
- Guia para a Matriz no PowerShell com Exemplos
- Exemplos de expressões regulares em PowerShell
- Guia Completo para a Função em Shell Script
- Saiba o Eco em Shell Script
- Exemplos de Mudar Caso em Shell Script
- Python Interruptor de Caso | Como Implementar?
Leave a Reply