函数参数成为一个数组

时间:2013-04-04 19:38:27

标签: powershell

我有一个简单的PowerShell功能

function Foo($a, $b){
  '$a = ' + $a
  '$b = ' + $b
}

我通过调用

来调用它
Foo("dogs", "cat");

到目前为止我读过的所有内容都说预期的输出是

$a = dogs
$b = cats

我实际看到的是:

$a = dogs cat
$b =

如果我将我的功能重写为:

function Foo($a, $b){
  '$a is ' + $a.GetType().Name;
  '$b = ' + $b.GetType().Name;
}

输出结果为:

$a is Object[]
You cannot call a method on a null-valued expression.
At C:\WCMTeam\Percussion\Notifier\foo.ps1:4 char:7
+       '$b = ' + $b.GetType().Name;
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

显然$ a和$ b被合并为一个数组。我在做什么导致这种情况以及如何更改它以获得我的预期结果?

1 个答案:

答案 0 :(得分:5)

您应该使用

调用您的函数
Foo "dogs" "cats"

,用于分隔Powershell中的数组元素,所以

Foo "dogs", "cats"

使用单个数组参数调用Foo,该参数分配给$a