web-dev-qa-db-ja.com

パラメーターを使用してPowershellスクリプトから実行可能ファイルを実行する

だから、実行するメソッドを設定するために渡す引数を指定して実行可能ファイルを実行することになっているpowershellスクリプトがあり、構成ファイルへのディレクトリであるパラメーターを渡す必要があります。これが私が持っているものです

Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList /genmsi/f $MySourceDirectory\src\Deployment\Installations.xml

/ fはショートネームで、fileは私の属性のロングネームです... powershellで、/ fまたは/ fileの位置パラメーターが見つからないというエラーが表示されます。

何かご意見は?

42

Invoke-Expressionコマンドレットを使用して、これを機能させることができました。

Invoke-Expression "& `"$scriptPath`" test -r $number -b $testNumber -f $FileVersion -a $ApplicationID"
25

引数リストを引用してみてください:

Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList "/genmsi/f $MySourceDirectory\src\Deployment\Installations.xml"

引数リストを配列(コンマ区切りの引数)として提供することもできますが、通常は文字列を使用する方が簡単です。

49
Keith Hill

以下は、複数の引数を実行する代替方法です。引数が1ライナーに対して長すぎる場合に使用します。

$app = 'C:\Program Files\MSBuild\test.exe'
$arg1 = '/genmsi'
$arg2 = '/f'
$arg3 = '$MySourceDirectory\src\Deployment\Installations.xml'

& $app $arg1 $arg2 $arg3
26
Knuckle-Dragger

私のためにうまくいった例を追加するだけです:

$sqldb = [string]($sqldir) + '\bin\MySQLInstanceConfig.exe'
$myarg = '-i ConnectionUsage=DSS Port=3311 ServiceName=MySQL RootPassword= ' + $rootpw
Start-Process $sqldb -ArgumentList $myarg
5
Sergio Di Fiore