2017-07-20 21 views
0

私はPowerShellスクリプトを使ってオートデスク製品をインストールしていますが、何か問題があります。Powershellは引数付きMSIを呼び出します

私はこれをさまざまな方法で試してみましたが、エラーが続いています。

(Start-Process "msiexec.exe" -ArgumentList ""/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR="C:\Program Files\Autodesk\" ADSK_SETUP_EXE=1 /qb!"" -NoNewWindow -Wait -PassThru).ExitCode 

エラーがパラメータに引数を検証することはできません二重引用符を使用して

は「ArgumentListは」引数はnullまたは空です。インストールディレクトリ

$RevitInstallDir = "C:\Program Files\Autodesk\" 
    (Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR=$RevitInstallDir ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode 

を定義する変数を使用し

は私がします。msiexec /オプション必須パラメータエラーを取得し、これを行います。また、この試み

は、私は位置パラメータを受信パス

(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR="C:\Program Files\Autodesk\" ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode 

に引用した単一引用符は、引数Cを受け入れることを見つけることができません。インストールディレクトリ

(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR='C:\Program Files\Autodesk\' ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode 
上の単一引用符を使用して\プログラム

これを行うには、msiexec/option必須パラメータエラーが表示されます。私はこれを行う場合は

は外

(Start-Process "msiexec.exe" -ArgumentList '/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR="C:\Program Files\Autodesk\" ADSK_SETUP_EXE=1 /qb!' -NoNewWindow -Wait -PassThru).ExitCode 

に単一引用符を使用して、それが働いてから$ dirFiles変数を防ぎます。

私がStart-Processを使用しているのは、インストーラが多数あり、インストーラが終了するまで1人のインストーラが待つようにしたいからです。どんな助けもありがとう!ありがとう

EDIT:Nevermind、私はそれを考え出した。インストールディレクトリ

周り

(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR=""C:\Program Files\Autodesk\"" ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode 

二重引用符がここからアイデアを得ました。・プロセスを開始するためにそれを渡し、変数に引数全体を格納してhttps://blogs.technet.microsoft.com/heyscriptingguy/2015/06/20/weekend-scripter-understanding-quotation-marks-in-powershell/

おかげ

答えて

0

どれ運?

例:

$argument = "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR='C:\Program Files\Autodesk\' ADSK_SETUP_EXE=1 /qb!" 
(start-process msiexec.exe -argumentlist $argument).ExitCode 
0

これは、最初のコードのための私の推薦だろうあなたは二重引用符の内側に単一引用符を使用し、提供スニペット...

(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR='C:\Program Files\Autodesk\' ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode 

これがエラーを受信した場合は、重要なパラメータが欠落しています。

0

私は答えを見つけました。 installdirのパスを二重引用符で固定してくれました。あなたは特権でプロセスを実行する必要がない限り

おかげ

(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR=""C:\Program Files\Autodesk\"" ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode 
+0

「開始プロセス」は必要ありません。 –

2

Start-Processを気にしないでください。代わりにcall operatorsplattingを使用してください。コマンドの終了コードはautomatic variable$LastExitCodeに格納されています。

$params = '/i', "$dirFiles\ABDS2017\Img\x64\RVT\RVT.msi", 
      'INSTALLDIR="C:\Program Files\Autodesk"', 'ADSK_SETUP_EXE=1', 
      '/qb!' 
& msiexec.exe @params 
$LastExitCode 
関連する問題