如果你学过其他的高级语言一定对Switch不陌生,下面讲解一下基本语法。

例1:

 1 $n=Get-Random 5
 2 $s='小明考试得分'
 3 switch($n)
 4 {
 5     0 {$m=30}
 6     1 {$m=50}
 7     2 {$m=70}
 8     3 {$m=90}
 9     4 {$m=100}
10     5 {$m=120}
11 }
12 $s+$m

例2:

 1 $n=Get-Random 100
 2 $s='小明考试得分'
 3 switch($n)
 4 {
 5     {$_ -lt 60} {$m='不及格'}
 6     {$_ -ge 60 -and $_ -lt 70} {$m='及格'}
 7     {$_ -ge 70 -and $_ -lt 90} {$m='良'}
 8     {$_ -ge 90 -and $_ -lt 120} {$m='优'}
 9     {$_ -eq 120} {$m='满分'}
10 }
11 $s+$n+' 评级:'+$m

当然也可以配合使用正则表达式

1 $n=Get-Random 100
2 $s='小明考试得分'
3 switch ($n)
4 {
5     {$_ -match '[0-6][0-9]|^0$'} {$m='不及格'}
6     default{$m='及格'}
7 }
8 $s+$n+' 评级:'+$m

当然你觉得麻烦还可以开启正则表达式参数

1 $n=Get-Random 100
2 $s='小明考试得分'
3 switch -Regex($n)
4 {
5     '[0-6][0-9]|^0$' {$m='不及格'}
6     default{$m='及格'}
7 }
8 $s+$n+' 评级:'+$m

开启通配符模式

1 $s='www.baidu.com'
2 switch -Wildcard($s)
3 {
4     'www*' {'匹配'}
5     default{'不匹配'}
6 }

开启精确模式,当前模式下必须条件完美匹配,才能符合条件语句

1 $s='www.baidu.com'
2 switch -Exact($s)
3 {
4     'www' {'匹配'}
5     default{'不匹配'}
6 }

开启大小写敏感模式,当前模式下,区分大小写(默认是不区分大小写)

1 $s='A'
2 switch -CaseSensitive($s)
3 {
4     'a' {'匹配'}
5     default{'不匹配'}
6 }

也可以多个参数同时存在

1 $s='A'
2 switch -CaseSensitive -Exact($s)
3 {
4     'A' {'匹配'}
5     default{'不匹配'}
6 }

文件模式,当前模式下匹配对应行

1 1..30|Out-File 1.txt
2 $f='1.txt'
3 switch -Regex -File($f)
4 {
5     '5' {'匹配 '+$_}
6     default{'不匹配 '+$_}
7 }

 和文件模式一样,支持循环结构的匹配

1 $n=1..99
2 switch  ($n)
3 {
4     {$_ -match 5} {$_}
5 }