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,但我想知道如何让它与它们一起工作.
在powershell参数传递时没有括号尝试:
foo 0 0
Run Code Online (Sandbox Code Playgroud)
干
FOO(0,0)
您将对象数组作为第一个参数传递.
您可以传递数组,然后将每个值拆分为脚本中的参数,但为什么呢?
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |