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

时间:2012-04-03 15:06:32

标签: powershell scripting

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

function foo([Int32] $a, [Int32] $b)
{
}
foo(0,0)

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

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

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

function foo([Int32] $a)
{
}
foo(0)

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

function foo($a, $b)
{
}
foo(0,0)

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

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

foo 0 0

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

2 个答案:

答案 0 :(得分:9)

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

foo 0 0

操作

FOO(0,0)

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

您可以传递数组,然后将每个值作为参数拆分到脚本中,但为什么要这样做?

答案 1 :(得分:0)

Function MyFunction ([int32]$arg1,[int32]$arg2)
 {


  $data= $arg1+$arg2 
 return $data 


 }

MyFunction 2 4