我要自动安装网络共享打印机时正在编写代码。脚本应安装在哪台打印机上取决于用户是在Sales还是HR中工作。我想用switch
语句解决此问题,但问题是它始终与第一个值匹配。
我尝试了连续点或断点的几种组合,但是没有一个能达到我想要的结果。
$a = "HR"
switch ($a) {
{"Marketing", "Sales"} { "1" }
{"Sales Department", "HR"} { "2" }
"EDV" { "3" }
}
输出:
1 2
通常,控制台输出应为“ 2”,但应为“ 1”“ 2”。
答案 0 :(得分:5)
将条件块更改为:
{$_ -in "Marketing", "Sales"}
通过这种方式,两个术语都将与切换用例匹配
答案 1 :(得分:0)
针对Mathias的回答,您不能同时使用:
$a = "HR"
switch($a){
"Marketing"{}
"Sales"{"1"; break}
"Sales Department"{}
"HR"{"2";break}
}
输出:
2
答案 2 :(得分:0)
一旦您将脚本块放在左侧,它就会变得更像where子句。
$a | where {"Marketing", "Sales"}
返回的所有内容(如两个字符串的数组)都视为真实。这也将返回0:
$a = "HR"
switch ($a) {
{"whatever"} { "0" }
{"Marketing", "Sales"} { "1" }
{"Sales Department", "HR"} { "2" }
"EDV" { "3" }
}
使其工作的另一种方法:
$a = "HR"
switch ($a) {
{$_ -eq "Marketing" -or $_ -eq "Sales"} { "1" }
{$_ -eq "Sales Department" -or $_ -eq "HR"} { "2" }
"EDV" { "3" }
}
或使用-regex选项:
$a = "HR"
switch -regex ($a) {
"Marketing|Sales" { "1" }
"Sales Department|HR" { "2" }
"EDV" { "3" }
}