-1

我正在遵循官方的 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[]
4

1 回答 1

0

最后一行应该这样修改:

&main $args[0] $args[1]
于 2020-10-31T22:06:14.760 回答