我正在遵循官方的 Microsoft教程,以定义一个强制性位置参数和任何数量的剩余位置参数,可能会使用ValueFromRemainingArguments
. 我的尝试:
function main {
Param(
[String]
[Parameter(Mandatory = $true, Position = 0)]
$FOO,
[String[]]
[Parameter(Position = 1, ValueFromRemainingArguments)]
$BAR
)
Write-Host mandatory arg: $FOO
Write-Host additional args: $BAR
}
&main $args[0] $args
当我尝试运行脚本时,我得到以下输出:
PS C:\ps_scripts> .\script.ps1 foo bar bar2 bar3
mandatory arg: foo
additional args: foo bar bar2 bar3
预期输出:
PS C:\ps_scripts> .\script.ps1 foo bar bar2 bar3
mandatory arg: foo
additional args: bar bar2 bar3
如何产生所需的输出?
如果我用逗号分隔 args:
PS C:\ps_scripts> .\script.ps1 foo bar,bar2,bar3
输出是:
PS C:\ps_scripts> .\script.ps1 foo bar,bar2,bar3
mandatory arg: foo
additional args: foo System.Object[]