我有一个简单的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被合并为一个数组。我在做什么导致这种情况以及如何更改它以获得我的预期结果?
答案 0 :(得分:5)
您应该使用
调用您的函数Foo "dogs" "cats"
,
用于分隔Powershell中的数组元素,所以
Foo "dogs", "cats"
使用单个数组参数调用Foo
,该参数分配给$a
。