【发布时间】:2017-04-30 01:02:03
【问题描述】:
我需要在我的 powershell 脚本中调用一个可执行文件并希望等待它的结果。对于这个 exe,我需要提供一些包含在我的变量中的参数,但这不起作用
$gs = $currentPath +"\gs\gs8.70\bin\gswin32c.exe";
$outPdf="$cachepath\foobar_$IID.pdf"
$PS_FILE = "$cachepath\$IID.pdf"
我尝试像这样调用 gswin32c.exe
& $gs q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outPdf $PS_FILE
但这会导致错误
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
我认为可能存在错误,因为我需要将参数放在引号中,但正确的参数是什么?我的测试没有成功。
谢谢
【问题讨论】:
-
Write-Host "$gs q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outPdf $PS_FILE"给你什么?输出看起来像一个合理的命令行吗?您是否需要在参数周围添加引号以转义空格? -
@JeffZeitlin 这个问题还需要“等待其结果”,但事实并非如此。
-
@JamesC。如果您的断言是 PowerShell 不会等待
gswin32c产生其输出,那是不正确的。如果它这样做,它就不会是一个空壳。Start-Process -Wait只为没有控制台 I/O 的应用程序(比如记事本)添加一些东西,您确实需要等待进程本身终止。 (当然,或者您需要Start-Process为您提供的其他选项之一。)
标签: powershell