如果我有一个接受多个字符串参数的函数,则第一个参数似乎获取分配给它的所有数据,其余参数作为空传递。
快速测试脚本:
Function Test([string]$arg1, [string]$arg2) { Write-Host "`$arg1 value: $arg1" Write-Host "`$arg2 value: $arg2" } Test("ABC", "DEF")
生成的输出是
$arg1 value: ABC DEF $arg2 value:
正确的输出应该是:
$arg1 value: ABC $arg2 value: DEF
这似乎在多台机器上的 v1 和 v2 之间是一致的,所以很明显,我做错了什么。谁能指出具体是什么?
PowerShell(所有版本)中对函数的调用中的参数以 空格分隔,而不是逗号分隔 。此外,括号是完全不必要的,如果或更高版本处于活动状态,则会在 PowerShell 2.0(或更高版本)中导致解析错误。带括号的参数仅用于 .NET 方法。Set- StrictMode -Version 2
Set- StrictMode
-Version 2
function foo($a, $b, $c) { "a: $a; b: $b; c: $c" } ps> foo 1 2 3 a: 1; b: 2; c: 3