Articles

Switch Case in PowerShell

Switch Case in PowerShell

Switch case in PowerShell

johdatus kytkintapaukseen powershellissa

kytkintoimintoa powershellissa käytetään käsittelemään useita if-lausekkeita tai muilla termeillä se korvaa useita ehtoja if/else if/else. Voit tarkistaa yhden ehdon skriptissä tai funktiossa käyttämällä If/else-lauseketta, mutta jos haluat arvioida enemmän IF-lausekkeita, käytä Switchiä.

kytkin on parempi verrata useita If lausuntoja ja helppo toteuttaa ja yksinkertainen käyttö koodaus. On olemassa useita ehtoja kunkin lausuman ja kun yksi niistä täyttää sitten toiminta suoritetaan.

Aloita ilmainen Data Science-kurssi

Hadoop, Data Science, Statistics&muut

/ div>

syntaksi:

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

täysi syntaksi:

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

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

Kytkintapauksen parametrit Powershellissa

  • regex: sitä kutsutaan myös säännölliseksi lausekkeeksi. Suorittaa säännöllisen lausekkeen tarkistuksen suhteessa ehdon arvoon. Jos käytät Regex, WildCard ja Exacts ohitetaan. Myös, jos match lauseke ei ole merkkijono, tämä parametri ohitetaan.
  • jokerimerkki: ilmaisee, että ehto on jokerimerkkijono. Jos käytät jokerimerkkiä, Regex ja exact jätetään huomiotta. Myös, jos match lauseke ei ole merkkijono, tämä parametri ohitetaan.
  • Exact: suorittaa ottelun tarkkaa narua vastaan. Jos käytät eksaktia, yleismerkki ja Regex ohitetaan ja jos täsmäyslauseke ei ole merkkijono, tämä parametri ohitetaan.
  • Tapauksenherkkä: tämä parametri tarkistaa ehdon, joka vastaa täsmälleen hyväksyttyä arvoa (kirjainkoko herkkä), jos se ei täsmää, tämä parametri ohitetaan. Se tarvitsee myös merkkijonon arvon.
  • tiedosto: ottaa tiedostopolun syötearvona merkkijonon arvon sijaan. Jos Useita tiedostoparametreja ohitetaan, se vie vain viimeisen. Jokainen rivi tiedoston luetaan ja arvioidaan suhteessa ehto ja jos ehto vastaa niin se suorittaa, että arvo tai näyttää kirjallisen viestin.

vuokaavio

vuokaavio

vuokaavio

miten kytkin toimii Powershellissa?

kuten yllä olevassa kaaviossa, aina kun jokin arvo (merkkijono, kokonaisluku, float tai muut tietotyypit), array, jokerimerkit, tiedostot jne. on läpäissyt sitten se alkaa täsmäävät ehdot yksitellen ja kun ehto vastaa, skripti suorittaa että lohko. Useita vastaavia arvoja, useita scrips lohko suoritetaan ja jos vastaavaa arvoa ei löydy ja jos oletusarvo on määritetty niin se suorittaa, että lohko muuten on nollatulos.

Examples of Switch Case in PowerShell

Let us see the given example:

Example# 1

1. Yksinkertainen kytkin toiminto merkkijono, kokonaisluku arvo läpäissyt.

Code:

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

Lähtö:

powershell 1

powershell 1

Code:

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

Lähtö:

powershell 2PowerShell 2

PowerShell 2

nyt, mitä jos parametri ei vastaa lauseketta. Esimerkkinä alla, 5 ei vastaa mitään Kytkin tapauksissa. Tällöin lähtö on nolla.

koodi:

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

edellä mainitun ongelman ratkaisemiseksi on oletusarvoisesti määritettävä ja oletuslohko suoritetaan, kun mikään parametrista ei täsmää.

Code:

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

Lähtö:

powershell 3

powershell 3

Esimerkki# 2

Katsotaanpa annettua esimerkkiä:

ero if / else if /else-ja Switch-välillä. Alla olevasta esimerkistä voit ymmärtää, miten Switch-toiminnolla on helppo kirjoittaa skripti.

koodi:

$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

ero: 31,3154 millisekuntia

Tämä ero tulee valtavaksi, kun kirjoittaa massiivisia skriptejä tai funktioita Kytkimen sisälle.

1. Switch with Regex-parametri

Jos Regex mainitaan Switchissä, se arvioi lausekkeen läpäistyllä arvolla ja jos osa ehdosta täsmää, se suorittaa kyseisen toiminnon.

tarkastellaan alla olevaa esimerkkiä.

Code:

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

Lähtö:

powershell 5

powershell 5

Regexin lisäämisen jälkeen.

Code:

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

Lähtö:

powershell 6

powershell 6

2. Switch with Wildcard Parameter

Wildcard toimii samalla tavalla kuin Like-parametri.

Code:

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

Lähtö:

powershell 7PNG

powershell 7PNG

3. Kytkin, jolla on tarkka parametri

tarkka toiminto, on oletuksena kytkimessä. Ei ole väliä käytätkö sitä vai et. Mutta kun käytät kahta parametria samanaikaisesti, viimeinen parametri on etusijalla.

Code:

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

Output:

powershell 8PNG

powershell 8PNG

Code:

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

lähtö:

PowerShell 9png

PowerShell 9png

4. Vaihda Tiedostoparametrilla

voit antaa tiedostopolun suoraan kytkimelle parametrina. Voit käyttää tiedostoa, jossa on tiedoston polku sen sijaan, että antaisit sille muuttuvan lausekkeen.

Code:

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

Output:

switchcase in powershell. 2PNG

switchcase powershellissa. 2png

voit käyttää $PSItem: ia tai$_: ia työstääksesi ajankohtaisia kohteita.

5. Vaihda Tapauksenherkkä parametri

Kun käytät Tapauksenherkkä parametri kytkin, niin ehto on vastattava täsmälleen kunkin merkin.

Code:

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

Lähtö:

powershell 10png

powershell 10png

6. Passing Array Value to switch function

Simple Array :

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

Output:

passing array

passing array

Passing Array Object

code:

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

Lähtö:

powershell 12png

powershell 12png

7. Katkotilanne

kun määrität katkotilan, operaatio katkeaa kyseisessä silmukassa eikä voi jatkaa suoritusta. Tämä on melko hyödyllistä, kun et halua tarkistaa muita vaiheita, kun kunto täyttää ja suoritusaika tulee nopeammin.

Code:

$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
}
}

Lähtö:

breakcondition

breakcondition

Jos huomaat, suoritetaan vain yksi lohko, jonka jälkeen se poistuu kytkintoiminnosta.

8. Continue Condition

Continue-parametria käytetään tietyn iteraation ohittamiseen. Esimerkiksi, jos on 3 kohdetta vastaamaan niin se suorittaa ensin ja kun kunto ottelut niin se ohittaa muut vaiheet ja siirtyä seuraavaan vaiheeseen.

Code:

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

Lähtö:

continue condition

continue condition

kuten näette, on vain yksi argumentti hyväksytty (”Hello”), se suorittaa ensimmäisen lohkon vain koska lauseke on vastaava eikä muuta argumenttia ole jäljellä, skripti päättyy.

  • vielä yksi sekalainen esimerkki breakista ja jatkaa Switchillä.

Code:

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

Lähtö:

powershell 15png

powershell 15png

Conclusion

kaiken kaikkiaan Switch on paljon parempi kuin multiple If-olosuhteiden toteuttaminen ja tarjoaa enemmän toiminnallisuutta ja lyhentää suoritusaikaa.

suositellut artikkelit

Tämä on ollut ohje Vaihtotapaukseen Powershellissa. Tässä keskustelemme myös syntaksista, parametreista ja switch-tapauksen esimerkeistä Powershellissa. Voit myös katsoa seuraavia artikkeleita oppiaksesi lisää –

  1. mitä on Shell Scripting?
  2. PowerShell Commands
  3. Uses Of Powershell
  4. Guide to Array in PowerShell with Examples
  5. Examples of Regex in PowerShell
  6. Complete Guide to Function in Shell Scripting
  7. Examples of Switch Case in Shell Scripting
  8. Python Switch Case | How to Implement?
3 osaketta