Articles

Bytt Sak i PowerShell

Bytt Sak i PowerShellBytt sak I PowerShell

introduksjon til bytt sak i powershell

bryterfunksjon i powershell brukes til å håndtere flere hvis-setninger eller i andre termer er det erstatning av flere forhold hvis/annet hvis/annet. For å sjekke en enkelt betingelse i Skript eller Funksjon, kan Du bruke If / else-setningen, men hvis du vil evaluere MER HVIS setninger, bruk Bryteren.

Switch er bedre i forhold til flere If-setninger og enkel å implementere og enkel bruk for koding. Det er flere forhold under hver setning, og når en av dem tilfredsstiller, utføres handlingen.

Start Ditt Gratis Datavitenskapskurs

Hadoop, Datavitenskap, Statistikk&andre

syntaks:

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

Full Syntaks:

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

ELLER

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

Parametere For Brytertilfelle I PowerShell

  • regex: det kalles også regulært uttrykk. Utfører Regulære uttrykk sjekk mot verdien av betingelsen. Hvis Du bruker Regex, Blir WildCard og Exacts ignorert. Også, hvis match-klausulen ikke er en streng, ignoreres denne parameteren.
  • Jokertegn: Angir at betingelsen er en jokertegnstreng. Hvis Du bruker Jokertegn, Blir Regex og Exacts ignorert. Også, hvis match-klausulen ikke er en streng, ignoreres denne parameteren.
  • Eksakt: Utfører kampen mot den eksakte strengen. Hvis Du bruker Eksakt, Ignoreres Jokertegn og Regex, og hvis samsvarssetningen ikke er en streng, ignoreres denne parameteren.
  • CaseSensitive: denne parameteren vil kontrollere tilstanden som samsvarer nøyaktig med den passerte Verdien (saksfølsom) hvis den ikke samsvarer, ignoreres denne parameteren. Det trenger også en strengverdi.
  • Fil: Tar filbanen som en inndataverdi i stedet for en strengverdi. Hvis flere filparametere er bestått, tar det bare den siste. Hver linje i filen leses og evalueres mot betingelsen, og hvis betingelsen samsvarer, utfører den den verdien eller viser en skriftlig melding.

Flytskjema

Flytskjema

Flytskjema

Hvordan Fungerer Bryteren I PowerShell?

som vist i over diagrammet, når noen verdi (streng, Heltall, flyte eller andre datatyper), matrise, jokertegn, filer, etc. er passert så det starter matchende forhold en etter en, og når tilstanden matcher, skriptet utfører den blokken. For flere samsvarende verdier, vil flere scrips blokk utføres, og hvis ingen samsvarende verdi funnet, og hvis standardbetingelsen er angitt da den utfører den blokken ellers er det null utgang.

Eksempler På Switch Case I PowerShell

La oss se det gitte eksemplet:

Eksempel# 1

1. Enkel bryterfunksjon med streng, heltall verdi passert.

Kode:

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

Utgang:

powershell 1powershell 1

Kode:

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

Utgang:

powershell 2

powershell 2

nå, hva om parameteren ikke samsvarer med uttrykket. Som et eksempel gitt nedenfor, samsvarer 5 ikke med Noen Av Brytertilfellene. I dette tilfellet vil utgangen være null.

Kode:

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

for å overvinne problemet ovenfor, må standard angi og standardblokk utføres når ingen av parameteren samsvarer.

Kode:

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

Utgang:

powershell 3

powershell 3

Eksempel# 2

La oss se det gitte eksemplet:

forskjell mellom if / else if /else og switch. Fra eksemplet nedenfor kan du forstå hvordan det er enkelt å skrive et skript med Bryterfunksjonen.

Kode:

$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

Forskjell: 31.3154 millisekunder

denne forskjellen blir stor når du skriver massive skript eller funksjoner inne i bryteren.

1. Hvis Regex er nevnt i switch, evaluerer det uttrykket med bestått verdi, og hvis en del av tilstanden samsvarer, utfører den den operasjonen.

Tenk på eksemplet nedenfor.

Kode:

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

Utgang:

powershell 5

powershell 5

etter å ha lagt Til Regex.

Kode:

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

Utdata:

powershell 6

powershell 6

2. Bytt Med Jokertegn Parameter

Jokertegn fungerer likt som parameter.

Kode:

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

Utdata:

powershell 7png

powershell 7png

3. Bytt Med Eksakt Parameter

Eksakt funksjon er standard I Bryteren. Det spiller ingen rolle om du bruker det eller ikke. Men når du bruker to parametere samtidig, har den siste parameteren forrang.

Kode:

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

Utdata:

powershell 8png

powershell 8png

Kode:

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

utdata:

powershell 9png

powershell 9png

4. Bytt Med Filparameter

du kan angi en filbane direkte til Bryteren som parameter. Du kan bruke Fil med en bane til en fil i stedet for å gi den et variabelt uttrykk.

Kode:

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

Utgang:

bryterhus i powershell. 2PNG

bryterhus i powershell. 2PNG

du kan bruke $PSItem eller $_ for å jobbe med gjeldende Elementer.

5. Bytt Med CaseSensitive parameter

når Du bruker En Casesensitive parameter i en bryter, må tilstanden samsvare nøyaktig med hvert tegn.

Kode:

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

Utdata:

powershell 10png

powershell 10png

6. Passerer Matrise Verdi for å bytte funksjon

Enkel Matrise :

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

Utgang:

passerer matrise

passerer matrise

passerer Matrise Objekt

kode:

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

Utdata:

powershell 12png

powershell 12png

7. Bryt tilstand

Når du angir bryt tilstand, Da Operasjonen bryter i denne sløyfen og kan ikke fortsette videre kjøring. Dette er ganske nyttig når du ikke vil sjekke ytterligere trinn når tilstanden tilfredsstiller og utførelsestiden blir raskere.

Kode:

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

Utgang:

breakcondition

breakcondition

hvis du merker, er det bare en blokk utført og så går den ut av bryterfunksjonen.

8. Fortsett Betingelse

fortsett parameter brukes til a hoppe over bestemt iterasjon. For eksempel, hvis det er 3 elementer å matche så det vil utføre først og når tilstand kamper så det vil hoppe over andre trinn og gå til neste trinn.

Kode:

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

Utgang:

fortsett tilstand

fortsett tilstand

som du kan se er det bare ett argument bestått (‘Hei’), den utfører den første blokken bare fordi uttrykket samsvarer og det er ikke noe annet argument igjen å utføre, vil skriptet ende.

  • Et annet blandet eksempel på pause og fortsett Med Bryteren.

Kode:

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

Utgang:

powershell 15png

powershell 15png

Konklusjon

Alt i alt Er Bryteren langt bedre enn å implementere flere If-forhold og gir mer funksjonalitet og reduksjon i kjøretid.

Anbefalte Artikler

Dette har vært en guide For Å Bytte Sak I PowerShell. Her diskuterer vi også syntaksen, parametrene og eksemplene på switch case I Powershell. Du kan også se på følgende artikler for å lære mer-

  1. Hva Er Shell Scripting?Powershell-Kommandoer
  2. Powershell-Operatører
  3. Bruk Av Powershell
  4. Guide Til Matrise I PowerShell Med Eksempler
  5. Eksempler På Regex i PowerShell
  6. Komplett Guide Til Funksjon I Shell Scripting
  7. Lær Ekkoet I Shell Scripting
  8. Eksempler På Bytte Sak I Shell Scripting
  9. Python Switch Case / Hvordan Implementere?
3 Aksjer