Articles

Switch-Case in PowerShell

Switch-Case in PowerShell

Switch-Case in PowerShell

Introductie van een Switch-Case in PowerShell

Schakel de functie in PowerShell is gebruikt voor het verwerken van meerdere If statements of in andere termen is de vervanging van meerdere voorwaarden If/Else If/Else. Om een enkele voorwaarde in Script of functie te controleren, kun je If/else statement gebruiken, maar als je meer IF statements wilt evalueren, gebruik dan Switch.

Switch is beter te vergelijken met meerdere If statements en gemakkelijk te implementeren en eenvoudig te gebruiken voor codering. Er zijn meerdere voorwaarden onder elke verklaring en wanneer een van hen voldoet dan wordt de actie uitgevoerd.

Start uw gratis cursus Data Science

Hadoop, Data Science, Statistics & andere

syntaxis:

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

volledige syntaxis:

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

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

Parameters van Switch Case in PowerShell

  • Regex: het wordt ook wel reguliere expressie genoemd. Voert de reguliere expressie controle uit tegen de waarde van de voorwaarde. Als u Regex gebruikt, worden jokertekens en Exacts genegeerd. Ook, als de match clausule geen tekenreeks is dan wordt deze parameter genegeerd.
  • Wildcard: geeft aan dat de voorwaarde een wildcard-tekenreeks is. Als u Wildcard gebruikt, worden Regex en Exacts genegeerd. Ook, als de match clausule geen tekenreeks is dan wordt deze parameter genegeerd.
  • Exact: voert de overeenkomst uit tegen de exacte tekenreeks. Als je Exact, Joker en Regex gebruikt worden genegeerd en als de match clausule geen tekenreeks is dan wordt deze parameter genegeerd.
  • CaseSensitive: deze parameter controleert de voorwaarde die exact overeenkomt met de opgegeven waarde (hoofdlettergevoelig) als deze niet overeenkomt dan wordt deze parameter genegeerd. Het heeft ook een string waarde nodig.
  • bestand: neemt het bestandspad als een invoerwaarde in plaats van een tekenreekswaarde. Als meerdere bestandsparameters worden doorgegeven, duurt het alleen de laatste. Elke regel van het bestand wordt gelezen en geëvalueerd tegen de voorwaarde en als de voorwaarde overeenkomt dan voert het die waarde uit of geeft een geschreven bericht weer.

stroomdiagram

stroomdiagram

stroomdiagram

Hoe werkt Switch in PowerShell?

zoals weergegeven in boven het diagram, wanneer een waarde (string, Integer, float of andere gegevenstypen), array, jokertekens, bestanden, enz. wordt doorgegeven dan begint het matching voorwaarden een voor een en wanneer conditie overeenkomt, het script voert dat blok. Voor meerdere overeenkomende waarden worden meerdere scripsblokken uitgevoerd en als er geen overeenkomende waarde is gevonden en als standaardvoorwaarde is opgegeven, wordt dat blok uitgevoerd, anders is er null-uitvoer.

voorbeelden van switch Case in PowerShell

laten we het gegeven voorbeeld bekijken:

Voorbeeld# 1

1. Eenvoudige switch functie Met string, integer waarde doorgegeven.

Code:

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

uitvoer:

powershell 1

powershell 1

Code:

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

Output:

powershell 2

powershell 2

Nu, wat als de parameter komt niet overeen met de expressie. Als voorbeeld hieronder gegeven, 5 komt niet overeen met een van de switch gevallen. In dit geval zal de uitvoer null zijn.

Code:

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

om het bovenstaande probleem op te lossen, moet default specificeren en standaard blok wordt uitgevoerd wanneer geen van de parameter overeenkomt.

Code:

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

Output:

powershell 3

powershell 3

Voorbeeld# 2

laten we het gegeven voorbeeld bekijken:

verschil tussen If / Else If /Else en switch. Uit het onderstaande voorbeeld kunt u begrijpen hoe het eenvoudig is om een script te schrijven met de Switch-functie.

Code:

$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

verschil: 31.3154 milliseconden

dit verschil wordt groot wanneer u een groot script of functies in de switch schrijft.

1. Switch met Regex Parameter

als Regex wordt genoemd in switch, evalueert het de expressie met de opgegeven waarde en als een deel van de voorwaarde overeenkomt, voert het die operatie uit.

Bekijk het voorbeeld hieronder.

Code:

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

uitvoer:

powershell 5

powershell 5

na het toevoegen van Regex.

Code:

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

uitvoer:

powershell 6

powershell 6

2. Schakelen met jokertekens Parameter

jokertekens werken vergelijkbaar met soortgelijke parameter.

Code:

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

uitvoer:

powershell 7PNG

powershell 7PNG

3. Switch met exacte Parameter

exacte functie is standaard in Switch. Het maakt niet uit of je het gebruikt of niet. Maar als je twee parameters tegelijkertijd gebruikt dan heeft de laatste parameter voorrang.

Code:

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

Output:

powershell 8PNG

powershell 8PNG

Code:

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

Output:

powershell 9PNG

powershell 9PNG

4. Switch met Bestandsparameter

u kunt een bestandspad direct naar de Switch als parameter opgeven. U kunt een bestand met een pad naar een bestand gebruiken in plaats van het een variabele expressie te geven.

Code:

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

uitvoer:

schakelkast in powershell. 2PNG

schakelkast in powershell. 2PNG

u kunt $PSItem of $_ gebruiken om met huidige Items te werken.

5. Switch met CaseSensitive parameter

wanneer je een Casesensitive parameter gebruikt in een switch, dan moet de conditie exact overeenkomen met elk karakter.

Code:

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

uitvoer:

powershell 10PNG

powershell 10PNG

6. Passerende Array waarde om te schakelen functie

eenvoudige Array :

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

Output:

passerende array

passerende array

passerende Array Object

code:

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

Output:

powershell 12PNG

powershell 12PNG

7. Break condition

wanneer u de break condition opgeeft, breekt de operatie in die lus en kan ze niet verder worden uitgevoerd. Dit is vrij handig wanneer u niet wilt om verdere stappen te controleren wanneer de conditie voldoet en de uitvoeringstijd wordt sneller.

Code:

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

uitvoer:

breakcondition

breakcondition

Als u merkt dat er slechts één blok wordt uitgevoerd en dan verlaat het de schakelfunctie.

8. Continue Condition

Continue parameter wordt gebruikt om de specifieke iteratie over te slaan. Bijvoorbeeld, als er 3 items aan te passen dan zal het eerst uit te voeren en wanneer de conditie overeenkomt dan zal het overslaan van andere stappen en verplaatsen naar de volgende stap.

Code:

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

uitvoer:

doorgaan voorwaarde

doorgaan voorwaarde

zoals u kunt zien is er slechts één argument doorgegeven (‘Hallo’), het voert het eerste blok alleen uit omdat de expressie overeenkomt en er geen ander argument meer over is om uit te voeren, zal het script eindigen.

  • nog een gemengd voorbeeld van pauze en doorgaan met Switch.

Code:

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

uitvoer:

powershell 15PNG

powershell 15PNG

conclusie

al met al is Switch veel beter dan het implementeren van meerdere If-Voorwaarden en biedt het meer functionaliteit en een kortere uitvoeringstijd.

Aanbevolen artikelen

Dit is een leidraad geweest om van hoofdletter te wisselen in PowerShell. Hier bespreken we ook de syntaxis, parameters en voorbeelden van switch case in Powershell. U kunt ook een kijkje nemen op de volgende artikelen voor meer informatie-

  1. Wat is Shell Scripting?
  2. PowerShell-opdrachten
  3. PowerShell-Operators
  4. gebruik van Powershell
  5. Guide to Array in PowerShell met voorbeelden
  6. voorbeelden van Regex in PowerShell
  7. Complete Guide to Function in Shell Scripting
  8. leer de Echo in Shell Scripting
  9. voorbeelden van switch Case in Shell Scripting
  10. Python Switch Case / hoe te implementeren?
3 aandelen