Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 函数参数变成一个数组_Powershell - Fatal编程技术网

Powershell 函数参数变成一个数组

Powershell 函数参数变成一个数组,powershell,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; '

我有一个简单的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被合并到一个数组中。我在做什么来导致这种情况?我应该如何更改它以获得预期的结果?

您应该使用

Foo "dogs" "cats"
用于分隔Powershell中的数组元素,因此

Foo "dogs", "cats"

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

,您应该使用

Foo "dogs" "cats"
用于分隔Powershell中的数组元素,因此

Foo "dogs", "cats"

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

将其称为
Foo(“dogs”“cats”)
会导致它失败,并在表达式或语句中出现错误“Unexpected token”“cats”。但将其更改为仅
Foo“dogs”“cats”
确实解决了问题。非常感谢。这就像VBScript中的括号规则一样让人抓狂。听那个人(李)说。在函数调用中根本不应该使用
。PowerShell不等同于c#,PS有自己的语言(尽管有很多.Net/c#代码工作)。哦,我在听。只是觉得过渡有点迷失方向-/将其称为
Foo(“dogs”“cats”)
会导致它失败,并在表达式或语句中出现错误“Unexpected token”“cats”。“但将其更改为
Foo“dogs”“cats”
确实解决了问题。非常感谢。这就像VBScript中的括号规则一样让人抓狂。听那个人(李)说。在函数调用中根本不应该使用
。PowerShell不等同于c#,PS有自己的语言(尽管有很多.Net/c#代码工作)。哦,我在听。只是觉得过渡有点迷失方向-/