我的切换功能出了什么问题

时间:2013-11-24 08:58:30

标签: powershell

我正在尝试编写一个脚本,其中一部分类似于下面的内容:

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>

然而,这才是实际发生的事情:

enter image description here

无论我输入什么,我都会MEH三次回到我身边。如果我完全期待MEH - 即使我的前两个切换选项在某种程度上被打破了 - 我认为我应该只看到它一次。为什么我会得到MEH,更不用说三次?

在Windows 7旗舰版上使用PowerShell 4.0

1 个答案:

答案 0 :(得分:5)

在PowerShell中调用函数时,不要使用括号。你应该像这样打电话给FooBarMeh:

FooBarMeh $c $a $b

如果使用($c, $a, $b)调用它,那么您传递的是3个元素的数组。该数组被分配给$in

(有趣的是,开关就像一个循环。它会在数组中的每个项目中执行。我没想到。)

但请注意,当您调用.NET函数时,请使用括号。例如:

$a.Contains('A')