Articles

caz comutator în PowerShell

caz comutator în PowerShell

comutator caz în PowerShell

introducere pentru a comuta caz în PowerShell

funcția de comutare în PowerShell este folosit pentru a gestiona mai multe dacă declarații sau în alți termeni este înlocuirea mai multor condiții dacă/else dacă/else. Pentru a verifica o singură condiție în Script sau funcție, puteți utiliza declarația If/else, dar dacă doriți să evaluați mai multe declarații IF, atunci utilizați Switch.

comutator este mai bine compara cu mai multe dacă declarații și ușor de implementat și simplu de utilizat pentru codificare. Există mai multe condiții sub fiecare afirmație și atunci când una dintre ele satisface, atunci acțiunea este efectuată.

începeți cursul gratuit de știință a datelor

Hadoop, știința datelor, statistici& altele

sintaxă:

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

sintaxa completa:

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

sau

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

parametrii de caz comutator în PowerShell

  • regex: se mai numește expresie regulată. Efectuează verificarea expresiei regulate în raport cu valoarea condiției. Dacă utilizați Regex, WildCard și Exacts sunt ignorate. De asemenea, dacă clauza de potrivire nu este un șir, atunci acest parametru este ignorat.
  • Wildcard: indică faptul că condiția este un șir wildcard. Dacă utilizați Wildcard, Regex, și Exacts sunt ignorate. De asemenea, dacă clauza de potrivire nu este un șir, atunci acest parametru este ignorat.
  • Exact: efectuează meciul cu șirul exact. Dacă utilizați Exact, Wildcard și Regex sunt ignorate și dacă clauza de potrivire nu este un șir, atunci acest parametru este ignorat.
  • CaseSensitive: acest parametru va verifica condiția care se potrivește exact cu valoarea trecută (case sensitive) dacă nu se potrivește, atunci acest parametru este ignorat. De asemenea, are nevoie de o valoare șir.
  • File: ia calea fișierului ca o valoare de intrare, mai degrabă decât o valoare șir. Dacă sunt trecuți mai mulți parametri de fișiere, este nevoie doar de ultimul. Fiecare linie a fișierului este citită și evaluată în funcție de condiție și, dacă condiția se potrivește, execută acea valoare sau afișează un mesaj scris.

Diagramă

Diagramă

Diagramă

cum funcționează comutatorul în PowerShell?

așa cum se arată în diagrama de mai sus, ori de câte ori orice valoare (șir, întreg, float sau alte tipuri de date), matrice, metacaractere, fișiere, etc. este trecut, apoi începe să se potrivească condiții unul câte unul și atunci când se potrivește condiție, scriptul execută acel bloc. Pentru mai multe valori de potrivire, mai multe scrips bloc va fi executat și în cazul în care nici o valoare de potrivire a găsit și în cazul în care condiția implicită este specificată, atunci se execută acel bloc altfel nu există ieșire nul.

Exemple de caz comutator în PowerShell

să vedem exemplul dat:

exemplu# 1

1. Funcție simplă de comutare cu șir, valoare întreagă trecută.

Cod:

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

ieșire:

powershell 1

powershell 1

Cod:

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

ieșire:

PowerShell 2

PowerShell 2

acum, ce se întâmplă dacă parametrul nu se potrivește cu expresia. Ca exemplu de mai jos, 5 nu se potrivește cu niciunul dintre cazurile de comutare. În acest caz, ieșirea va fi nulă.

Cod:

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

pentru a depăși problema de mai sus, implicit trebuie să specificați și blocul implicit execută atunci când nici unul dintre parametrii se potrivește.

Cod:

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

ieșire:

powershell 3

powershell 3

exemplu# 2

să vedem exemplul dat:

diferența dintre if / else if /else și switch. Din exemplul de mai jos, puteți înțelege cum este ușor să scrieți un script cu funcția de comutare.

Cod:

$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

diferență: 31.3154 milisecunde

această diferență devine vastă atunci când scrieți un script masiv sau funcții în interiorul comutatorului.

1. Comutați cu parametrul Regex

dacă Regex este menționat în comutator, acesta evaluează expresia cu valoare trecută și dacă o parte a condiției se potrivește, atunci execută acea operație.

luați în considerare exemplul de mai jos.

Cod:

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

ieșire:

powershell 5

powershell 5

după adăugarea Regex.

Cod:

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

ieșire:

powershell 6

powershell 6

2. Comutarea cu parametrul Wildcard

wildcard funcționează similar cu parametrul Like.

Cod:

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

ieșire:

powershell 7png

powershell 7png

3. Comutarea cu parametrul Exact

funcția exactă este implicită în comutator. Nu contează dacă îl folosești sau nu. Dar când utilizați doi parametri în același timp, atunci ultimul parametru are prioritate.

Cod:

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

ieșire:

powershell 8png

powershell 8png

Cod:

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

ieșire:

PowerShell 9png

PowerShell 9png

4. Comutarea cu parametrul fișier

puteți furniza o cale de fișier direct comutatorului ca parametru. Puteți utiliza fișierul cu o cale către un fișier în loc să-i dați o expresie variabilă.

Cod:

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

ieșire:

switchcase în powershell. 2png

switchcase în powershell. 2PNG

puteți utiliza $PSItem sau $_ pentru a lucra cu elementele curente.

5. Comutarea cu parametrul CaseSensitive

când utilizați un parametru Casesensitive într-un comutator, atunci condiția trebuie să se potrivească exact cu fiecare caracter.

Cod:

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

ieșire:

powershell 10png

powershell 10PNG

6. Trecerea valorii Array pentru a comuta funcția

matrice simplă :

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

ieșire:

trecerea array

trecerea array

array obiect

cod:

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

ieșire:

powershell 12png

powershell 12png

7. Break condiție

când specificați break condiție, apoi pauze de Operare în acea buclă și nu poate continua executarea în continuare. Acest lucru este destul de util atunci când nu doriți să verificați pașii suplimentari atunci când starea se satisface și timpul de execuție devine mai rapid.

Cod:

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

ieșire:

breakcondition

breakcondition

dacă observați, există un singur bloc executat și apoi iese din funcția de comutare.

8. Parametrul continuare condiție

continuare este utilizat pentru a sări peste iterația particulară. De exemplu, dacă există 3 elemente pentru a se potrivi, atunci se va executa mai întâi și atunci când se potrivește condiție, atunci va sări peste alți pași și pentru a trece la pasul următor.

Cod:

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

ieșire:

continuare condiție

continuare condiție

după cum puteți vedea există doar un singur argument a trecut (‘Hello’), se execută primul bloc numai pentru că expresia este de potrivire și nu există nici un alt argument stânga pentru a executa, script-ul se va termina.

  • încă un exemplu mixt de pauză și continuați cu comutatorul.

Cod:

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

ieșire:

powershell 15png

powershell 15png

concluzie

În general, Switch-ul este mult mai bun decât implementarea mai multor condiții If și oferă mai multă funcționalitate și reducere a timpului de execuție.

Articole recomandate

acesta a fost un ghid pentru a comuta caz în PowerShell. Aici vom discuta, de asemenea, sintaxa, parametrii și exemple de caz comutator în Powershell. Ați putea avea, de asemenea, o privire la următoarele articole pentru a afla mai multe-

  1. ce este Shell Scripting?
  2. comenzi PowerShell
  3. operatori PowerShell
  4. utilizări ale Powershell
  5. ghid pentru matrice în PowerShell cu exemple
  6. Exemple de Regex în PowerShell
  7. ghid complet pentru a funcționa în Shell Scripting
  8. aflați ecoul în Shell Scripting
  9. Exemple de caz comutator în Shell Scripting
  10. Python switch Case / Cum să pună în aplicare?
3 acțiuni