Switch

Handle multiple if statements

Syntax (brief)

      Switch ($item)
      {
       value { expression }
       value { expression }
      }

Syntax (full)

      Switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline )
      { 
        "string"|number|variable|{ expression } { statementlist }
        default { statementlist } 
      }

      Switch [-regex|-wildcard|-exact][-casesensitive] -file filename
      { 
        "string"|number|variable|{ expression } { statementlist }
        default { statementlist } 
      }
Key

   -regex       Treat the match clause, if a string, as a Regex
   -wildcard    Treat the match clause, if a string, as a wildcard string
   -exact	     Match strings exactly (disable wildcards)
 -casesensitive Modify the match clause, if a string, to be case sensitive
   -file        Take input from a file (or representative)

The keyword "break" indicates that no more processing will occur and the switch statement will exit.

The keyword "continue" indicates that no processing will continue against the current token and the next token in the conditional will be evaluated. If no tokens are available, the switch statement will exit.

If pipeline results in an array, each element of the array will be evaluated in ascending offset order (starting at 0). At least one element must be present that meets at least one condition or an error will result.

Examples

Compare a string, this is effectively just a string of IF statements:

 PS> $my_variable = "ss64"
 PS> switch ($my_variable){
     ss61 {"First result"; break}
     ss62 {"Second"; break}
     ss63 {"Third"; break}
     ss64 {"Fourth"; break}
     ss65 {"Fifth"; break}
     default {"Something else happened"; break}
     }

The break at the end of each condition tells the switch to stop looking further, if you omit this, the switch statement can match more than one clause and perform more than one action.

"History teaches us that men and nations behave wisely once they have exhausted all other alternatives" - Abba Eban

Related:

Break statement
Continue statement
ForEach-Object - (foreach) Loop for each object in the pipeline
ForEach - Loop through values in the pipeline
For - Loop through items that match a condition
IF - Conditionally perform a command
While - Loop while a condition is True



Back to the Top

Simon Sheppard
SS64.com