S- nõiajuhtumi tutvustus PowerShellis

Lülituse funktsiooni PowerShellis kasutatakse mitme If-lause käsitsemiseks või mõnes muus mõttes mitme tingimuse If / Else If / Else asendamiseks. Skripti või funktsiooni üksikute tingimuste kontrollimiseks võite kasutada käsku If / else, kuid kui soovite hinnata rohkem IF avaldusi, kasutage nuppu Switch.

Lülitit on parem võrrelda mitme If-avaldusega ning seda on lihtne rakendada ja kodeerimiseks lihtne kasutada. Igas avalduses on mitu tingimust ja kui üks neist vastab, siis toiming teostatakse.

Süntaks:

Switch ()
(
(Action1)
(Action2)
)

Terviklik süntaks:

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

VÕI

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

Lüliti juhtumi parameetrid PowerShellis

  • Regex : seda nimetatakse ka tavaliseks ekspressiooniks. Regulaarväljendi kontrollib tingimuse väärtust. Regexi kasutamisel eiratakse WildCardi ega Exactsi. Samuti, kui vasteklausel ei ole string, siis seda parameetrit eiratakse.
  • Metamärk : näitab, et tingimus on metamärgi string. Metamärgi kasutamisel eiratakse Regexi ja Exacti. Samuti, kui vasteklausel ei ole string, siis seda parameetrit eiratakse.
  • Täpne : viib mängu täpse stringi alusel. Kui kasutate täpset, ignoreeritakse metamärki ja regexi ning kui vasteklausel ei ole string, siis seda parameetrit eiratakse.
  • CaseSensitive: see parameeter kontrollib tingimust, mis vastab täpselt läbitud väärtusele (tõstutundlik), kui see ei kattu, siis seda parameetrit eiratakse. Samuti vajab see stringi väärtust.
  • File : võtab faili teekonna sisendväärtusena, mitte stringi väärtusena. Kui mitu faili parameetrit on möödunud, võtab see ainult viimase. Faili iga rida loetakse ja hinnatakse tingimuse alusel ning kui tingimus vastab, siis see täidab selle väärtuse või kuvab kirjaliku teate.

Vooskeem

Kuidas lüliti töötab PowerShellis?

Nagu diagrammi ülaosas näidatud, alustatakse väärtuste (string, täisarv, hõljumine või muud andmetüübid), massiivi, metamärke, faile jms saatmist siis üksuste kaupa tingimuste vastavusse viimisega ja tingimuse kokkulangemisel käivitab skript selle blokeeringu . Mitme vaste väärtuse korral täidetakse mitu sirvimisplokki ja kui vastavusväärtust ei leita ning kui vaikimistingimus on määratletud, siis see täidab selle ploki, vastasel juhul pole väljund väljund.

Näited lülituskorpuse kohta rakenduses PowerShell

Vaatame antud näidet:

Näide nr 1

1. Lihtne lülitusfunktsioon stringiga, täisarv ületatud.

Kood:

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

Väljund: kolm

Kood:

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

Väljund: andmed teostatud

Mis siis saab, kui parameeter ei vasta avaldisele. Allpool toodud näitena ei sobi 5 ühegi lüliti juhtumiga. Sel juhul on väljund null.

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

Ülaltoodud probleemi lahendamiseks tuleb vaikimisi täpsustada ja vaikimisi blokeerida, kui ükski parameeter ei sobi.

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

Väljund: vastet ei leitud

Näide 2

Vaatame antud näidet:

Erinevus kui / muidu kui / veel ja lüliti vahel. Allpool toodud näitest saate aru, kuidas on lihtne skripti kirjutada, kasutades funktsiooni Lülita.

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

Väljund: kell on kolm

Mõlema meetodi täitmise aeg.

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

Mitu sekundit kokku: 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")
)
)

Mitu sekundit kokku: 25, 6802

Erinevus: 13, 4614 millisekundit

See erinevus muutub tohutuks, kui kirjutate lüliti sisse suuri skripte või funktsioone.

1. Lülitage parameetri Regex abil

Kui lülitil mainitakse Regexi, hindab see avaldist möödunud väärtusega ja kui osa tingimusest vastab, siis ta täidab selle toimingu.

Vaatleme allpool toodud näidet.

Kood:

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

Väljund: midagi pole mainitud

Pärast Regexi lisamist.

Kood:

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

Väljund : mainitakse eeslit

Eeslit mainitakse uuesti

2. Lülitage metamärgi parameetriga

Metamärk töötab sarnaselt parameetriga Like.

Kood:

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

Väljund: WMI viga

3. Lülitage täpse parameetri abil

Täpne funktsioon on lüliti vaikeseade. Pole vahet, kas kasutad seda või mitte. Kuid kui kasutate kahte parameetrit korraga, siis eelistab viimast parameetrit.

Kood:

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

Väljund: pole maailma

Kood:

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

Väljund: Tere maailm

4. Lülitage failiparameetriga

Failitee saab pakkuda otse parameetrisse Lüliti. Muutuja avaldise andmise asemel võite kasutada faili koos teega Fail.

Kood:

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

Väljund:

Praeguste üksustega töötamiseks võite kasutada $ PSItem või $ _.

5. Lülitage parameetriga CaseSensitive

Kui kasutate lülitil parameetrit Casesensitive, peab tingimus vastama täpselt igale tähemärgile.

Kood:

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

Väljund: see ei sobi

6. Massiivi väärtuse ületamine funktsiooni lülitamiseks

Lihtne massiiv:

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

Väljund:

Kümme

Kaksteist

Massiiviobjekti läbimine

Kood:

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

Väljund:

VM kustutamise toiming

VM-i loomise toiming

7. Murdmise seisund

Kui määrate pausi tingimuse, katkeb operatsioon selles silmus ja ei saa edasist täitmist jätkata. See on üsna kasulik, kui te ei soovi edasisi samme kontrollida, kui tingimus on täidetud ja täitmisaeg muutub kiiremaks.

Kood:

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

Väljund:

VM kustutamise toiming

Kui märkate, on täidetud ainult üks plokk ja see väljub lülitusfunktsioonist.

8. Jätka tingimust

Jätkamisparameetrit kasutatakse konkreetse iteratsiooni vahelejätmiseks. Näiteks kui ühildada on 3 üksust, siis see käivitatakse kõigepealt ja kui tingimus sobib, siis jätab see teised sammud vahele ja liigub järgmisele etapile.

Kood:

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

Väljund: käivitab esimese ploki

Nagu näete, on läbitud ainult üks argument ('Tere'), käivitab see esimese ploki ainult seetõttu, et avaldis sobib ja täitmiseks pole ühtegi muud argumenti, skript lõpeb.

  • Veel üks segatud näide vaheaegadest ja jätkake Switchiga.

Kood:

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

Väljund:

Esimene plokk täidab

Teine plokk täidab

Järeldus

Kokkuvõttes on Switch palju parem kui mitme If-i tingimuste rakendamine ning pakub rohkem funktsioone ja lühendab täitmisaega.

Soovitatavad artiklid

See on olnud juhtum juhtumikorpuse lülitamiseks PowerShellis. Siin käsitleme ka Powershelli süntaksi, parameetreid ja lülitusjuhtumi näiteid. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -

  1. Mis on Shelli skriptimine?
  2. PowerShelli käsud
  3. PowerShelli operaatorid
  4. Powershelli kasutusviisid
  5. Juhend PowerShelli massiivi kohta koos näidetega

Kategooria: