.exe のラッパーである PowerShell スクリプトを作成しています。オプションのスクリプト パラメータをいくつか用意し、残りを 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
ましたが、同じ結果が得られます。
これを達成する方法はありますか?
多分別のパラメータスキーム?