2016-12-14 68 views
1

我需要在我的powershell腳本中調用一個可執行的,並且想等待它的結果。爲了此exe我需要給它們包含在我的變量一些參數,但這不起作用如何從參數中調用powershell的exe文件?

$gs = $currentPath +"\gs\gs8.70\bin\gswin32c.exe"; 
$outPdf="$cachepath\foobar_$IID.pdf" 
$PS_FILE = "$cachepath\$IID.pdf" 

我嘗試調用這樣

& $gs q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outPdf $PS_FILE 

的gswin32c.exe但是,這導致錯誤

gswin32c.exe : GPL Ghostscript 8.70: Unrecoverable error, exit code 1 
    In F:\pdix-services\GWT-BPS\EventHandler\adobe-printing.ps1:21 Zeichen:1 
    + & $gs q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outPdf $PS_FIL ... 
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     + CategoryInfo   : NotSpecified: (GPL Ghostscript...or, exit code 1:String) [], RemoteException 
     + FullyQualifiedErrorId : NativeCommandError 

我認爲可能有一個錯誤,因爲我需要把參數放在引號中,但是什麼是正確的?我的測試不起作用。

感謝

+0

這似乎是通過回答http://stackoverflow.com/questions/12478535/how-can-i-execute-an-external-program-with-parameters-in-powershell –

+1

什麼'寫主機「 $ gs q -dSAFER -dNOPAUSE -dBATCH -sDEVICE = pdfwrite -sOutputFile = $ outPdf $ PS_FILE「'給你?輸出看起來像一個合理的命令行嗎?你需要在你的參數周圍添加引號來避開空格嗎? –

+0

@JeffZeitlin這個問題也需要「等待它的結果」,那不是。 –

回答

1

你應該可以寫你的命令是這樣的:

& $gs q "-dSAFER" "-dNOPAUSE" "-dBATCH" "-sDEVICE=pdfwrite" "-sOutputFile=$outPDF" 

我寫這一點,可能是文章有幫助的:

Windows IT Pro: Running Executables in PowerShell

本文下載中提供的showargs.exe實用工具可幫助您解決PowerShell的命令行解析問題。

0

Start-Process-Wait應該做你:

$gs = "$currentPath\gs\gs8.70\bin\gswin32c.exe" 
$arguments = "q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=`"$cachepath\foobar_$IID.pdf`" `"$cachepath\$IID.pdf`"" 
Start-Process $gs $arguments -Wait 
相關問題