about_Switch

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Switch

DESCRIZIONE BREVE

Viene illustrato come usare un'opzione per gestire più istruzioni If.

DESCRIZIONE LUNGA

Per verificare una condizione in uno script o in una funzione, usare un'istruzione If. L'istruzione If è in grado di verificare molti tipi di condizioni, tra cui il valore delle variabili e le proprietà degli oggetti.

Per verificare più condizioni, usare un'istruzione Switch. L'istruzione Switch è equivalente a una serie di istruzioni If, ma è più semplice. L'istruzione Switch elenca ogni condizione e un'azione facoltativa. Se viene ottenuta una condizione, l'azione viene eseguita.

Un'istruzione Switch di base presenta il formato seguente:

        Switch (<test-value>)
        {
            <condition> {<action>}
            <condition> {<action>}
       }

Ad esempio, l'istruzione Switch seguente confronta il valore di test, 3, per ciascuna delle condizioni. Quando il valore di test corrisponde alla condizione, viene eseguita l'azione.

        PS> switch (3) 
         {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."}
            4 {"It is four."}
         } 
        It is three.

In questo semplice esempio, il valore viene confrontato con ogni condizione nell'elenco, persino se esiste una corrispondenza per il valore 3. L'istruzione Switch seguente presenta due condizioni per un valore pari a 3. Ciò dimostra che, per impostazione predefinita, tutte le condizioni vengono testate.

        PS> switch (3) 
         {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."}
            4 {"It is four."}
            3 {"Three again."}
         } 
        It is three.
        Three again.

Per impostare l'istruzione Switch in modo che arresti il confronto dopo una corrispondenza, usare l'istruzione Break. L'istruzione Break termina l'istruzione Switch.

        PS> switch (3) 
         {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."; Break}
            4 {"It is four."}
            3 {"Three again."}
         } 
        It is three.

Se il valore di test è una raccolta (ad esempio una matrice), ogni elemento nella raccolta viene valutato nell'ordine in cui viene visualizzato. Nell'esempio seguente vengono valutati gli elementi 4 e 2.

         PS> switch (4, 2) 
         {
            1 {"It is one." }
            2 {"It is two." }
            3 {"It is three." }
            4 {"It is four." }
            3 {"Three again."}
         } 
        It is four.
        It is two.

Tutte le istruzioni Break si applicano alla raccolta, non a ciascun valore, come illustrato nell'esempio seguente. L'istruzione Switch viene terminata dall'istruzione Break nella condizione relativa al valore 4.

         PS> switch (4, 2) 
         {
            1 {"It is one."; Break}
            2 {"It is two." ; Break }
            3 {"It is three." ; Break }
            4 {"It is four." ; Break }
            3 {"Three again."}
         } 
        It is four.

SINTASSI

La sintassi completa dell'istruzione Switch è la seguente:

        switch [-regex|-wildcard|-exact][-casesensitive] (<value>)

oppure

        switch [-regex|-wildcard|-exact][-casesensitive] -file filename

seguita da

        { 
            "string"|number|variable|{ expression } { statementlist }
            default { statementlist } 
        }

Se non vengono usati parametri, l'istruzione Switch esegue una corrispondenza esatta senza distinzione tra maiuscole e minuscole per il valore. Se il valore è una raccolta, ogni elemento viene valutato nell'ordine in cui viene visualizzato.

L'istruzione Switch deve includere almeno un'istruzione della condizione.

La clausola Default viene attivata quando il valore non corrisponde a nessuna delle condizioni. È equivalente a una clausola Else in un'istruzione If. È consentita solo una clausola Default in ogni istruzione Switch.

L'istruzione Switch presenta i parametri seguenti:

Regex

Esegue la corrispondenza con espressioni regolari del valore per la condizione. Se si usa Regex, i parametri Wildcard ed Exact vengono ignorati. Inoltre, se la clausola di ricerca non è una stringa, questo parametro viene ignorato.

                           Example:
                           PS> switch ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               } 

                           PS> switch -Regex ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               }
                        That's too many.

Wildcard

Indica che la condizione è una stringa jolly. Se si usa Wildcard, i parametri Regex ed Exact vengono ignorati. Inoltre, se la clausola di ricerca non è una stringa, questo parametro viene ignorato.

Exact

Indica che la clausola di ricerca, se è una stringa, deve corrispondere esattamente. Se si usa Exact, i parametri Regex e Wildcard vengono ignorati. Inoltre, se la clausola di ricerca non è una stringa, questo parametro viene ignorato.

CaseSensitive

Esegue una corrispondenza con maiuscole e minuscole. Se la clausola di ricerca non è una stringa, questo parametro viene ignorato.

File

Accetta input da un file anziché da un'istruzione di valore. Se sono inclusi più parametri File, viene usato solo l'ultimo. Ogni riga del file viene letta e valutata dall'istruzione Switch.

Sono consentite più istanze di Regex, Wildcard o Exact. Tuttavia, solo l'ultimo parametro usato è valido.

Se il valore corrisponde a più condizioni, viene eseguita l'azione per ogni condizione. Per modificare questo comportamento, usare le parole chiave Break o Continue.

La parola chiave Break interrompe l'elaborazione e termina l'istruzione Switch.

La parola chiave Continue prosegue l'elaborazione del valore corrente e degli eventuali valori successivi.

Se la condizione è un'espressione o un blocco di script, viene valutata prima del confronto con il valore. Il valore è assegnato alla variabile $_ automatica ed è disponibile nell'espressione. La ricerca ha esito positivo se l'espressione è True o corrisponde al valore. L'espressione viene valutata nel proprio ambito.

La parola chiave "Default" specifica una condizione che viene valutata solo quando le altre condizioni non corrispondono al valore.

L'azione per ogni condizione non dipende dalle azioni in altre condizioni. La parentesi graffa di chiusura ( } ) nell'azione rappresenta un'interruzione esplicita.

VEDERE ANCHE

about_Break

about_Continue

about_If

about_Script_Blocks