Johdanto S- noitatapaukseen PowerShellissä

Kytkentätoimintoa PowerShellissä käytetään useiden If-lauseiden käsittelemiseen tai muulla tavalla se korvaa useiden ehtojen If / Else If / Else. Voit tarkistaa yhden tilan komentosarjoissa tai funktioissa käyttämällä If / else-käskyä, mutta jos haluat arvioida enemmän IF-lauseita, käytä sitten Vaihto-painiketta.

Vaihtaminen on parempi verrata useisiin If-lauseisiin ja helppo toteuttaa ja yksinkertainen käyttö koodauksessa. Jokaisessa lauseessa on useita ehtoja ja kun yksi niistä täyttää, toiminto suoritetaan.

Syntaksi:

Switch ()
(
(Action1)
(Action2)
)

Koko syntaksi:

Switch (-regex | -wildcard | -exact ) ( -casesensitive ) ( ) (
"String" | Number | Variable | ( expression ) ( statementlist )
default ( statementlist )
)

TAI

Switch (-regex | -wildcard | -exact ) ( -casesensitive ) -file (filename)(
"String" | Number | Variable | ( expression ) ( statementlist )
default ( statementlist )
)

Kytkentäkotelon parametrit PowerShellissä

  • Regex : Sitä kutsutaan myös säännölliseksi lausekkeeksi. Suorittaa säännöllisen lausekkeen tarkistuksen ehdon arvon perusteella. Jos käytät Regexiä, WildCard ja Exacts jätetään huomioimatta. Lisäksi, jos ottelulauseke ei ole merkkijono, tämä parametri jätetään huomioimatta.
  • Jokerimerkki : Osoittaa, että ehto on jokerimerkkijono. Jos käytät jokerimerkkiä, Regexiä ja Exacteja ei huomioida. Lisäksi, jos ottelulauseke ei ole merkkijono, tämä parametri jätetään huomioimatta.
  • Tarkka : Suorittaa ottelun tarkkaa merkkijonoa vastaan. Jos käytät tarkkaa, Wildcard ja Regex jätetään huomioimatta ja jos ottelulauseke ei ole merkkijono, tämä parametri jätetään huomioimatta.
  • CaseSensitive: Tämä parametri tarkistaa tilan, joka vastaa tarkalleen annettua arvoa (isot ja pienet kirjaimet), jos se ei vastaa, tämä parametri jätetään huomioimatta. Se tarvitsee myös merkkijonoarvon.
  • Tiedosto : Ottaa tiedostopolun syötearvoksi merkkijonon arvon sijasta. Jos useita tiedostoparametreja ohitetaan, se vie vain viimeisen. Jokainen tiedoston rivi luetaan ja arvioidaan ehdon suhteen, ja jos ehto vastaa, se suorittaa kyseisen arvon tai näyttää kirjallisen viestin.

vuokaavio

Kuinka kytkin toimii PowerShellissä?

Kuten kaavion yllä esitetään, aina kun jokin arvo (merkkijono, kokonaisluku, kelluva tai muut tietotyypit), taulukko, jokerimerkit, tiedostot jne. Ohitetaan, se alkaa sovittaa ehtoja yksi kerrallaan ja kun ehto vastaa, skripti suorittaa kyseisen lohkon . Useita vastaavia arvoja varten suoritetaan useita tarkistuslohkoja, ja jos vastaavaa arvoa ei löydy ja jos oletusolosuhteita on määritetty, se suorittaa kyseisen lohkon, muuten ei ole nollaulostuloa.

Esimerkkejä kytkinkotelosta PowerShellissä

Katsokaamme annettu esimerkki:

Esimerkki # 1

1. Yksinkertainen kytkentätoiminto merkkijonolla, kokonaislukuarvo ohitettu.

Koodi:

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

Tulos: kolme

Koodi:

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

Tulos: Tiedot suoritettu

Entä jos parametri ei vastaa lauseketta. Alla annettuna esimerkkinä 5 ei vastaa yhtäkään Vaihtotapausta. Tässä tapauksessa lähtö on nolla.

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

Edellä mainitun ongelman ratkaisemiseksi oletusarvo on määritettävä ja oletuslohko suoritetaan, kun mikään parametrista ei vastaa.

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

Tulos: Vastausta ei löytynyt

Esimerkki 2

Katsokaamme annettu esimerkki:

Ero jos / muu jos / muu ja Vaihda. Alla olevasta esimerkistä voit ymmärtää, kuinka komentojono on helppo kirjoittaa Vaihda-toiminnolla.

$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")
)

Lähtö: Kello on kello 3

Suoritusaika molemmille menetelmille.

$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")
)

Kokonaismillisekuntia: 39, 1416

$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")
)
)

Kokonaismillisekuntia: 25, 6802

Ero: 13, 4614 millisekuntia

Tämä ero tulee valtavaksi, kun kirjoitat massiivisia skriptejä tai toimintoja kytkimen sisällä.

1. Vaihda Regex-parametrilla

Jos Regex mainitaan kytkimessä, se arvioi lausekkeen läpäistetyllä arvolla ja jos osa ehdosta vastaa, se suorittaa kyseisen operaation.

Mieti seuraavaa esimerkkiä.

Koodi:

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

Tulos: Mitään ei mainita

Lisäyksen jälkeen Regex.

Koodi:

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

Tulos : Aasi mainitaan

Aasi mainitaan taas

2. Vaihda jokerimerkillä

Jokerimerkki toimii samalla tavalla kuin Like-parametri.

Koodi:

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

Tulos: WMI-virhe

3. Vaihda tarkalla parametrilla

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

Koodi:

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

Tulos: Ei maailmaa

Koodi:

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

Tulos: Hei maailma

4. Vaihda tiedostoparametrilla

Voit antaa tiedostopolun suoraan kytkimelle parametrina. Voit käyttää Tiedostoa polulla tiedostoon sen sijaan, että annat sille muuttujan lausekkeen.

Koodi:

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

lähtö:

Voit käyttää $ PSItem- tai $ _ -työkalua nykyisten kohteiden kanssa.

5. Vaihda CaseSensitive-parametrilla

Kun käytät Koseensitiivistä parametria kytkimessä, ehdon on vastattava tarkalleen jokaista merkkiä.

Koodi:

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

Tulos: Tämä ei vastaa

6. Taulukon arvon siirtäminen toiminnon vaihtamiseksi

Yksinkertainen ryhmä:

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

lähtö:

Kymmenen

Kaksitoista

Array-objektin ohittaminen

Koodi:

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

lähtö:

VM-poisto-operaatio

VM-luontiohjelma

7. Tauko

Kun määrität tauon ehdon, Operaatio katkeaa siinä silmukassa, etkä voi jatkaa suoritusta. Tämä on melko hyödyllistä, kun et halua tarkistaa lisävaiheita, kun ehto täyttyy ja suoritusaika nopeutuu.

Koodi:

$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ö:

VM-poisto-operaatio

Jos huomaat, vain yksi lohko on suoritettu ja sitten se poistuu kytkintoiminnosta.

8. Jatka ehtoa

Jatka-parametria käytetään tietyn iteraation ohittamiseen. Esimerkiksi, jos vastaavia kohteita on 3, se suorittaa ensin ja kun ehto vastaa, se ohittaa muut vaiheet ja siirtyy seuraavaan vaiheeseen.

Koodi:

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

Tulos: Ensimmäinen lohko suorittaa

Kuten näette, vain yksi argumentti on ohitettu ('Hei'), se suorittaa ensimmäisen lohkon vain, koska lauseke on sopiva eikä suoritettavaksi ole muuta argumenttia, skripti loppuu.

  • Vielä yksi sekoitettu esimerkki tauosta ja jatka vaihtamalla.

Koodi:

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

lähtö:

Ensimmäinen lohko suorittaa

Toinen lohko suorittaa

johtopäätös

Kaiken kaikkiaan, Switch on paljon parempi kuin useiden If-ehtojen toteuttaminen ja tarjoaa enemmän toimintoja ja lyhentää suoritusaikaa.

Suositellut artikkelit

Tämä on opas Switch Case -sovellukseen PowerShellissä. Tässä keskustellaan myös Powershellin syntaksista, parametreista ja esimerkkeistä kytkintapauksista. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja-

  1. Mikä on Shell Scripting?
  2. PowerShell-komennot
  3. PowerShell-operaattorit
  4. Käyttö Powershell
  5. Opas PowerShellin taulukkoon esimerkkeinä

Luokka: