我正在编写一个 PowerShell 脚本,它是 .exe 的包装器。我想要一些可选的脚本参数,并将其余的直接传递给 exe。这是一个测试脚本:
param (
[Parameter(Mandatory=$False)] [string] $a = "DefaultA"
,[parameter(ValueFromRemainingArguments=$true)][string[]]$ExeParams # must be string[] - otherwise .exe invocation will quote
)
Write-Output ("a=" + ($a) + " ExeParams:") $ExeParams
如果我使用命名参数运行,一切都很好:
C:\ > powershell /command \temp\a.ps1 -a A This-should-go-to-exeparams This-also
a=A ExeParams:
This-should-go-to-exeparams
This-also
但是,如果我尝试省略我的参数,则会将第一个未命名的参数分配给它:
C:\ > powershell /command \temp\a.ps1 This-should-go-to-exeparams This-also
a=This-should-go-to-exeparams ExeParams:
This-also
我希望:
a=DefaultA ExeParams:
This-should-go-to-exeparams
This-also
我尝试添加Position=0
到参数,但这会产生相同的结果。
有没有办法做到这一点?
也许不同的参数方案?