コマンドラインアプリケーションを使用してPDFレポートを生成するスクリプトがあります。Powershell - 引数リスト内で変数を渡す方法
ここでスクリプトがバッチ形式(日付は変数です)にあります:私は、引数を指定して起動プロセスを使用してPowerShellのに上記の実装しようとしていますが、引数が正しく
を動作させるように見えることはできませんQsrCrExport.exe -f"C:\SMTP\Reports\Speed of Service Summary" -o"C:\SMTP\Daily_Archive\SpeedofService.pdf" -a"Date:%one%,%one%" -epdf
私は、これは変数が文句を言わない値に置き換えられて、単一引用符で包まれたしかし、私は、引数内のすべての二重引用符を削除し、二重引用符で行全体をラップする場合、それはまだ勝った動作しません知っている
$crexport = "C:\Program Files (x86)\ReportViewer\Bin\QsrCrExport.exe";
$arguments = '-f"C:\ProgramData\ReportViewer\Reports\Speed of Service Summary" -o"C:\SMTP\Generated\SpeedofService.pdf" -a"Date:$reportdate1,$reportdate2" -epdf'
Start-Process $crexport $arguments -Wait;
仕事はありません。
これは本当に簡単なことですが、私はpowershellにとても慣れています。
Start-Process -FilePath '"C:\Program Files (x86)\ReportViewer\Bin\QsrCrExport.exe"' -ArgumentList @('-f"C:\ProgramData\ReportViewer\Reports\Speed of Service Summary"', '-o"C:\SMTP\Generated\SpeedofService.pdf"', '-a"Date:$reportdate1,$reportdate2"', '-epdf') -wait
べきその仕事:
http://stackoverflow.com/questions/38900961/passing-variable-arguments-using-powershells-start-process-cmdlet。これは弱いですが、答えは正しいです。あなたは引数をarray__として__passする必要があります。あなたが同意するならば、欺瞞としてフラグを立てるでしょう。 exeを呼び出すことについての他の答えがありますが、それは埋葬されていないスタートプロセスのためにうまくいくものです。 – Matt