查看并使用 Windows PowerShell 脚本中的 Switch 构造
Switch 构造类似于具有多个 ElseIf 部分的 If 构造。 Switch 构造根据多个值计算单个变量或项目,并为每个值提供一个脚本块。 如果每个值与变量匹配,则运行该值的脚本块。 还有一个 Default 部分仅在没有匹配项时才运行。
Switch 构造使用以下语法:
Switch ($choice) {
1 { Write-Host "You selected menu item 1" }
2 { Write-Host "You selected menu item 2" }
3 { Write-Host "You selected menu item 3" }
Default { Write-Host "You did not select a valid option" }
}
除了匹配值之外,Switch 构造还可用于匹配模式。 可以使用 -wildcard 参数,以与 -like 运算符相同的语法来执行模式匹配。 或者,可以使用 -regex 参数通过正则表达式执行匹配。
请务必注意,使用模式匹配时,可以进行多次匹配。 当有多个匹配项时,将运行所有匹配模式的脚本块。 这与仅运行一个脚本块的 If 构造不同。
下面的示例使用模式匹配:
Switch -WildCard ($ip) {
"10.*" { Write-Host "This computer is on the internal network" }
"10.1.*" { Write-Host "This computer is in London" }
"10.2.*" { Write-Host "This computer is in Vancouver" }
Default { Write-Host "This computer is not on the internal network" }
}
对于伦敦或温哥华网络上的 $ip 值,将显示两条消息。 如果 $ip 包括 10.x.x.x 网络上的 IP 地址,则消息将指示计算机位于内部网络上,并且该计算机位于伦敦或温哥华。 如果 $ip 不是 10.x.x.x 网络上的 IP 地址,则该消息指示它不在内部网络上。
如果将数组中的多个值提供给 Switch 构造,则会计算数组中的每个项目。 在前面的示例中,如果变量 $ip 是具有两个 IP 地址的数组,则将处理这两个 IP 地址。 数组中每个项目对应的操作将被执行。