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-
- Mikä on Shell Scripting?
- PowerShell-komennot
- PowerShell-operaattorit
- Käyttö Powershell
- Opas PowerShellin taulukkoon esimerkkeinä