Articles

Interruttore di Caso in PowerShell

Interruttore di Caso in PowerShell

Interruttore di Caso in PowerShell

Introduzione all’Interruttore di Caso in PowerShell

Interruttore di funzione in PowerShell viene utilizzato per gestire più istruzioni If o in altri termini si tratta di sostituzione di più condizioni If/Else If/Else. Per controllare una singola condizione nello Script o nella funzione, è possibile utilizzare l’istruzione If/else, ma se si desidera valutare più istruzioni IF, utilizzare Switch.

Switch è migliore rispetto a più istruzioni If e facile da implementare e semplice utilizzo per la codifica. Ci sono più condizioni sotto ogni istruzione e quando una di esse soddisfa, viene eseguita l’azione.

Inizia il tuo corso gratuito di scienza dei dati

Hadoop, Data Science, Statistics& others

Sintassi:

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

Completa la Sintassi:

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

O

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

Parametri di Interruttore di Caso in PowerShell

  • Regex: È chiamato anche Espressione Regolare. Esegue il controllo delle espressioni regolari rispetto al valore della condizione. Se si utilizza Regex, jolly e Exact vengono ignorati. Inoltre, se la clausola match non è una stringa, questo parametro viene ignorato.
  • Carattere jolly: indica che la condizione è una stringa jolly. Se si utilizza il carattere jolly, Regex e Exact vengono ignorati. Inoltre, se la clausola match non è una stringa, questo parametro viene ignorato.
  • Esatto: esegue la corrispondenza con la stringa esatta. Se si utilizza Exact, Jolly e Regex vengono ignorati e se la clausola match non è una stringa, questo parametro viene ignorato.
  • CaseSensitive: questo parametro controllerà la condizione che corrisponde esattamente al valore passato (case sensitive) se non corrisponde, questo parametro viene ignorato. Ha anche bisogno di un valore stringa.
  • File: prende il percorso del file come un valore di input piuttosto che un valore di stringa. Se vengono passati più parametri di file, richiede solo l’ultimo. Ogni riga del file viene letta e valutata rispetto alla condizione e se la condizione corrisponde, esegue quel valore o visualizza un messaggio scritto.

Diagramma di flusso

Diagramma di flusso

Diagramma di flusso

Come funziona Switch in PowerShell?

Come mostrato sopra il diagramma, ogni volta che qualsiasi valore (stringa, Intero, float o altri tipi di dati), array, caratteri jolly, file, ecc. viene passato quindi inizia a corrispondere le condizioni una per una e quando la condizione corrisponde, lo script esegue quel blocco. Per più valori corrispondenti, verrà eseguito più blocchi scrip e se non viene trovato alcun valore corrispondente e se viene specificata la condizione predefinita, esegue quel blocco altrimenti non c’è output nullo.

Esempi di caso di commutazione in PowerShell

Vediamo l’esempio dato:

Esempio# 1

1. Semplice funzione di commutazione con stringa, valore intero passato.

Codice:

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

Uscita:

powershell 1

powershell 1

Codice:

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

Uscita:

powershell 2

powershell 2

Ora, che cosa se il parametro non corrisponde l’espressione. Come esempio riportato di seguito, 5 non corrisponde a nessuno dei casi di switch. In questo caso, l’output sarà nullo.

Codice:

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

Per superare il problema precedente, default deve specificare e il blocco predefinito viene eseguito quando nessuno dei parametri corrisponde.

Codice:

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

Uscita:

powershell 3

powershell 3

Esempio# 2

vediamo l’esempio:

la Differenza tra if / else if /else e Switch. Dall’esempio seguente, puoi capire come sia facile scrivere uno script con la funzione Switch.

Codice:

$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

Differenza: 31.3154 millisecondi

Questa differenza diventa enorme quando si scrivono script massicci o funzioni all’interno dello switch.

1. Switch con parametro Regex

Se Regex è menzionato in switch, valuta l’espressione con valore passato e se parte della condizione corrisponde, esegue quell’operazione.

Considera l’esempio seguente.

Codice:

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

Uscita:

powershell 5

powershell 5

Dopo aver aggiunto Regex.

Codice:

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

Uscita:

powershell 6

powershell 6

2. Passa con il parametro jolly

Il carattere jolly funziona in modo simile al parametro Like.

Codice:

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

Uscita:

powershell 7PNG

powershell 7PNG

3. Interruttore con parametro esatto

Funzione esatta è di default in interruttore. Non importa se lo usi o no. Ma quando si utilizzano due parametri contemporaneamente, l’ultimo parametro ha la precedenza.

Codice:

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

Uscita:

powershell 8PNG

powershell 8PNG

Codice:

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

Uscita:

powershell 9PNG

powershell 9PNG

4. Switch con parametro File

È possibile fornire un percorso di file direttamente allo switch come parametro. È possibile utilizzare File con un percorso di un file invece di dargli un’espressione variabile.

Codice:

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

Uscita:

switchcase in powershell. 2PNG

switchcase in powershell. 2PNG

Puoi usare PS PSItem o _ _ per lavorare con gli elementi correnti.

5. Switch con parametro CaseSensitive

Quando si utilizza un parametro Casesensitive in uno switch, la condizione deve corrispondere esattamente a ciascun carattere.

Codice:

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

Uscita:

powershell 10PNG

powershell 10PNG

6. Passaggio del valore dell’array alla funzione di commutazione

Array semplice :

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

Output:

passaggio dell'array

passaggio dell'array

Passaggio Oggetto array

Codice:

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

Uscita:

powershell 12PNG

powershell 12PNG

7. Condizione di interruzione

Quando si specifica la condizione di interruzione, l’operazione si interrompe in quel ciclo e non è possibile continuare l’ulteriore esecuzione. Questo è abbastanza utile quando non si desidera controllare ulteriori passaggi quando la condizione soddisfa e il tempo di esecuzione diventa più veloce.

Codice:

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

Uscita:

breakcondition

breakcondition

Se si nota, viene eseguito un solo blocco e quindi esce dalla funzione switch.

8. Continua Condizione

Continua parametro viene utilizzato per saltare la particolare iterazione. Ad esempio, se ci sono 3 elementi da abbinare, verrà eseguito per primo e quando la condizione corrisponde, salterà altri passaggi e passerà al passaggio successivo.

Codice:

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

Uscita:

continua condizione

continua condizione

Come puoi vedere c’è un solo argomento passato (‘Hello’), esegue il primo blocco solo perché l’espressione è corrispondente e non c’è altro argomento da eseguire, lo script finirà.

  • Un altro esempio misto di pausa e continua con Switch.

Codice:

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

Uscita:

powershell 15PNG

powershell 15PNG

Conclusione

Tutto sommato, Switch è molto meglio che implementare più condizioni If e fornisce più funzionalità e riduzione dei tempi di esecuzione.

Articoli consigliati

Questa è stata una guida per cambiare caso in PowerShell. Qui discutiamo anche la sintassi, i parametri e gli esempi di switch case in Powershell. Si può anche dare un’occhiata ai seguenti articoli per saperne di più-

  1. Che cosa è Shell Scripting?
  2. Comandi di PowerShell
  3. PowerShell Operatori
  4. Usa Di Powershell
  5. Guida alla Matrice in PowerShell con Esempi
  6. Esempi di espressioni regolari in PowerShell
  7. Guida Completa alla Funzione di Shell Scripting
  8. Imparare l’Eco in Shell Scripting
  9. Esempi di Interruttore di Caso di Shell Scripting
  10. Python Interruttore di Caso | Come Implementare?
3 Condivisioni