查看并使用 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 地址,并为每个项运行相应的操作。