我无法在我正在使用的Powershell脚本中使用简单的switch语句。以前一直使用嵌套ifs并希望清理一下。代码如下。当我在调试中通过Powershell ISE并评估测试(例如 $ _ -match' match1' )时,它会根据$ mystring的值按预期评估为true。但是,似乎永远不会正确执行与Switch块中该值相关联的代码。我确定我错过了一些明显的东西,并感谢任何指导。希望我的描述有意义。我正在运行v5.1。
提前感谢任何想法/建议。
Switch ($myString)
{
($_ -match 'match1') {somecodeblock}
($_ -match 'match2') {somecodeblock}
($_ -match 'match3') {somecodeblock}
($_ -match 'match3') {somecodeblock}
($_ -match 'match4') {somecodeblock}
($_ -match 'match4') {somecodeblock}
}
答案 0 :(得分:2)
正确的语法是在使用$ _时使用围绕测试的花括号(您当前使用括号):
Switch ($myString)
{
{$_ -match 'match1'} {somecodeblock}
}
当你不使用$ _时,可以完全从测试中省略它们,如果使用-wildcard参数,你可以这样做:
Switch -wildcard ($myString)
{
'*match1*' {somecodeblock}
}
答案 1 :(得分:0)
switch statement的正确用法是:
Switch -regex ($myString)
{
'match1' {somecodeblock}
'match2' {somecodeblock}
}