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

Isz*_*szi 2 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)
Run Code Online (Sandbox Code Playgroud)

FOO如果我输入A,BAR如果我输入B,并且MEH如果我输入其他内容,我希望脚本返回.

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

在此输入图像描述

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

在Windows 7旗舰版上使用PowerShell 4.0

dan*_*gph 5

在PowerShell中调用函数时,不要使用括号.您应该像这样调用FooBarMeh:

FooBarMeh $c $a $b
Run Code Online (Sandbox Code Playgroud)

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

(有趣的是,开关的作用类似于循环.它会针对数组中的每个项执行.我没想到.)

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

$a.Contains('A')
Run Code Online (Sandbox Code Playgroud)