Как вызвать exe из powershell с параметрами?

Мне нужно вызвать исполняемый файл в моем скрипте 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

Я думаю, что может быть ошибка, потому что мне нужно поместить параметры в кавычки, но какие из них правильные? Мои тесты не сработали.

Спасибо

2 ответа

Решение

Вы должны быть в состоянии написать свою команду следующим образом:

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

Я написал статью об этом, которая может быть полезна:

Windows IT Pro: запуск исполняемых файлов в PowerShell

showargs.exe Утилита, представленная в загрузке статьи, может быть полезна при устранении неполадок при разборе командной строки PowerShell.

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
Другие вопросы по тегам