Articles

byta fall i PowerShell

byta fall i PowerShell

Switch Case i PowerShell

introduktion till Switch case i PowerShell

switch funktion i PowerShell används för att hantera flera om uttalanden eller i andra termer är det ersättning av flera villkor om/annars om/annat. För att kontrollera ett enda villkor i skript eller funktion kan du använda If/else-uttalande men om du vill utvärdera fler IF-uttalanden använder du Switch.

Switch är bättre jämfört med flera If-uttalanden och lätt att implementera och enkel användning för kodning. Det finns flera villkor under varje uttalande och när en av dem uppfyller utförs åtgärden.

starta din gratis Datavetenskapskurs

Hadoop, datavetenskap, statistik & övriga

syntax:

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

Full Syntax:

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

eller

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

parametrar för Omkopplarfodral i PowerShell

  • regex: det kallas också Reguljärt uttryck. Utför Reguljärt uttryck kontroll mot värdet av villkoret. Om du använder Regex ignoreras jokertecken och Exakter. Om matchningsklausulen inte är en sträng ignoreras denna parameter.
  • jokertecken: indikerar att villkoret är en jokersträng. Om du använder jokertecken ignoreras Regex och Exacts. Om matchningsklausulen inte är en sträng ignoreras denna parameter.
  • exakt: utför matchen mot den exakta strängen. Om du använder exakt, jokertecken och Regex ignoreras och om matchningsklausulen inte är en sträng ignoreras denna parameter.
  • CaseSensitive: denna parameter kontrollerar villkoret som matchar exakt med det godkända värdet (skiftlägeskänsligt) om det inte matchar ignoreras denna parameter. Det behöver också ett strängvärde.
  • fil: tar filvägen som ett inmatningsvärde snarare än ett strängvärde. Om flera filparametrar passeras tar det bara den sista. Varje rad i filen läses och utvärderas mot villkoret och om villkoret matchar kör det värdet eller visar ett skriftligt meddelande.

flödesschema

flödesschema

flödesschema

Hur fungerar omkopplaren i PowerShell?

som visas ovanför diagrammet, när något värde (sträng, heltal, float eller andra datatyper), array, jokertecken, filer etc. passeras då börjar det matcha villkor en efter en och när villkoret matchar, kör skriptet det blocket. För flera matchande värden, flera scrips block kommer att utföras och om inget matchande värde hittas och om standardvillkor anges sedan kör det blocket annars finns det null utgång.

exempel på Switch Case i PowerShell

Låt oss se det givna exemplet:

exempel# 1

1. Enkel omkopplingsfunktion med sträng, heltal värde passerat.

kod:

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

utgång:

powershell 1

powershell 1

kod:

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

utgång:

PowerShell 2

PowerShell 2

nu, vad händer om parametern inte matchar uttrycket. Som ett exempel nedan matchar 5 inte med något av Switch-Fallen. I detta fall kommer utmatningen att vara null.

kod:

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

för att lösa ovanstående problem måste standardinställningen ange och standardblocket körs när ingen av parametern matchar.

kod:

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

utgång:

powershell 3

powershell 3

exempel# 2

Låt oss se det givna exemplet:

skillnad mellan If / Else If /Else och Switch. Från exemplet nedan kan du förstå hur det är enkelt att skriva ett skript med Switch-funktionen.

kod:

$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

skillnad: 31.3154 millisekunder

denna skillnad blir stor när du skriver massiva skript eller funktioner inuti omkopplaren.

1. Växla med Regex Parameter

om Regex nämns i switch, utvärderar det uttrycket med godkänt värde och om en del av villkoret matchar utförs den åtgärden.

Tänk på exemplet nedan.

kod:

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

utgång:

powershell 5

powershell 5

Efter att ha lagt Regex.

kod:

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

utgång:

powershell 6

powershell 6

2. Växla med jokertecken Parameter

jokertecken fungerar liknande som parameter.

kod:

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

utgång:

powershell 7PNG

powershell 7PNG

3. Switch med exakt Parameter

exakt funktion är standard I Switch. Det spelar ingen roll om du använder det eller inte. Men när du använder två parametrar samtidigt har den sista parametern företräde.

kod:

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

utgång:

powershell 8PNG

powershell 8PNG

kod:

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

utgång:

PowerShell 9PNG

PowerShell 9PNG

4. Växla med Filparameter

Du kan ange en filsökväg direkt till växeln som en parameter. Du kan använda filen med en sökväg till en fil istället för att ge den ett variabelt uttryck.

kod:

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

utgång:

switchcase i powershell. 2PNG

switchcase i powershell. 2PNG

Du kan använda $PSItem eller $_ för att arbeta med aktuella objekt.

5. Växla med CaseSensitive parameter

När du använder en Casesensitive parameter i en switch måste villkoret matcha exakt med varje tecken.

kod:

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

utgång:

powershell 10PNG

powershell 10png

6. Att byta funktion

enkel Array :

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

utgång:

passande array

passande array

passerar Array objekt

kod:

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

utgång:

powershell 12png

powershell 12png

7. Break condition

När du anger break condition bryts operationen i den slingan och kan inte fortsätta vidare körning. Det här är ganska användbart när du inte vill kontrollera ytterligare steg när villkoret uppfyller och körtiden blir snabbare.

kod:

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

utgång:

breakcondition

breakcondition

om du märker det finns det bara ett block som körs och sedan går det ut från omkopplingsfunktionen.

8. Fortsätt skick

fortsätt parameter används för att hoppa över den specifika iterationen. Om det till exempel finns 3 objekt som matchar kommer det att köras först och när villkoret matchar kommer det att hoppa över andra steg och gå vidare till nästa steg.

kod:

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

utgång:

fortsätt skick

fortsätt skick

som du kan se finns det bara ett argument passerat (”Hej”), det kör det första blocket bara för att uttrycket matchar och det finns inget annat argument kvar att köra, skriptet slutar.

  • ett mer Blandat exempel på paus och fortsätt med Switch.

kod:

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

utgång:

powershell 15png

powershell 15png

slutsats

Sammantaget är Switch mycket bättre än att implementera flera If-förhållanden och ger mer funktionalitet och minskning av körtiden.

Rekommenderade artiklar

detta har varit en guide för att byta fall i PowerShell. Här diskuterar vi också syntax, parametrar och exempel på switch case i Powershell. Du kan också titta på följande artiklar för att lära dig mer-

  1. Vad är Shell Scripting?
  2. PowerShell-kommandon
  3. PowerShell-operatörer
  4. användning av Powershell
  5. Guide till Array i PowerShell med exempel
  6. exempel på Regex i PowerShell
  7. komplett Guide för att fungera i Shell Scripting
  8. lär dig Ekot i Shell Scripting
  9. exempel på Switch Case I Shell Scripting
  10. Python Switch Case / hur man implementerar?
3 aktier