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
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:
Codice:
switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}
Uscita:
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:
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:
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 :
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:
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:
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:
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:
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:
Codice:
Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
Uscita:
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:
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:
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 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:
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:
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:
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:
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ù-
- Che cosa è Shell Scripting?
- Comandi di PowerShell
- PowerShell Operatori
- Usa Di Powershell
- Guida alla Matrice in PowerShell con Esempi
- Esempi di espressioni regolari in PowerShell
- Guida Completa alla Funzione di Shell Scripting
- Imparare l’Eco in Shell Scripting
- Esempi di Interruttore di Caso di Shell Scripting
- Python Interruttore di Caso | Come Implementare?
Leave a Reply