有没有办法在PowerShell中使用单个交换机匹配来定位多个条件?

Isz*_*szi 1 powershell

在示例脚本中,如果我的变量匹配1,我想执行一个代码块,如果匹配2,3,5或8,则执行另一个代码,而对于4,6或7,我想执行不同的块.

我想做这样的事情:

switch($x)
{
    1 {'Condition 1'}
    2 -or 3 -or -5 -or 8 {'Condition 2'}
    4 -or 6 -or 7 {'Condition 3'}
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有没有办法用switch进行这种工作,而不必单独拼出所有8个选项,或者只有多个if语句才能实现?

Kei*_*ill 5

另一种选择,如果您想将值视为数字而不是字符串:

switch ($x)
{
    1                {'Condition 1'}
    {$_ -in 2,3,5,8} {'Condition 2'}
    {$_ -in 4,6,7}   {'Condition 3'}
}
Run Code Online (Sandbox Code Playgroud)