我正在尝试编写一个脚本,其中一部分类似于下面的内容:
function FooBarMeh ($in,$1,$2)
{
switch($in)
{
$1{'FOO'}
$2{'BAR'}
default{'MEH'}
}
}
$a='A'
$b='B'
$c=read-host
FooBarMeh ($c,$a,$b)
如果我输入FOO
,我希望脚本返回A
,如果我输入BAR
,则{0}},如果我输入任何其他内容,则返回B
。< / p>
然而,这才是实际发生的事情:
无论我输入什么,我都会MEH
三次回到我身边。如果我完全期待MEH
- 即使我的前两个切换选项在某种程度上被打破了 - 我认为我应该只看到它一次。为什么我会得到MEH
,更不用说三次?
在Windows 7旗舰版上使用PowerShell 4.0
答案 0 :(得分:5)
在PowerShell中调用函数时,不要使用括号。你应该像这样打电话给FooBarMeh:
FooBarMeh $c $a $b
如果使用($c, $a, $b)
调用它,那么您传递的是3个元素的数组。该数组被分配给$in
。
(有趣的是,开关就像一个循环。它会在数组中的每个项目中执行。我没想到。)
但请注意,当您调用.NET函数时,请使用括号。例如:
$a.Contains('A')