调用具有2个整数args的函数时出错

Ner*_*ron 1 powershell scripting

我在PowerShell中定义了一个函数,并尝试调用它,如下所示.

function foo([Int32] $a, [Int32] $b)
{
}
foo(0,0)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下错误.

foo : Cannot process argument transformation on parameter 'a'. Cannot convert the "System.Object[]" value of type "System.Object[]" to type
 "System.Int32".
At line:1 char:4
+ foo <<<< (0,0)
    + CategoryInfo          : InvalidData: (:) [foo], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,foo
Run Code Online (Sandbox Code Playgroud)

如果我将函数更改为仅接受单个参数,如下所示,它可以正常工作.

function foo([Int32] $a)
{
}
foo(0)
Run Code Online (Sandbox Code Playgroud)

或者,如果我删除类型信息,它也可以如下所示工作.

function foo($a, $b)
{
}
foo(0,0)
Run Code Online (Sandbox Code Playgroud)

第一个版本出了什么问题?如何正确定义一个带有多个整数参数的函数?

编辑:有趣的是,以下调用确实有效.

foo 0 0
Run Code Online (Sandbox Code Playgroud)

我更喜欢()s,但我想知道如何让它与它们一起工作.

CB.*_*CB. 9

在powershell参数传递时没有括号尝试:

foo 0 0
Run Code Online (Sandbox Code Playgroud)

FOO(0,0)

您将对象数组作为第一个参数传递.

您可以传递数组,然后将每个值拆分为脚本中的参数,但为什么呢?

  • BTW这个常见的问题在标签wiki中提到过(以前称为常见问题解答) - http://stackoverflow.com/tags/powershell/info. (5认同)