none
リモートでバッチを起動したときに、バックグラウンドで起動したいジョブが勝手に終了している RRS feed

  • 質問

  • いつもお世話になっております。

    下記のような内容で、リモートでバッチを起動しようとしたところが、起動されたバッチがすぐに終了してしまいます。

    PsExecでバッチファイル1.batを起動すれば問題はないのですが、Powershellで可能にしたいのでご指摘を頂ければと

    思います。

    【ps1ファイル】

    $password = ConvertTo-SecureString "パスワード" -asplaintext -force
    $cred = New-Object System.Management.Automation.PsCredential "ユーザーID",$password
    $exitcode = invoke-command -ComputerName 192.168.0.1 -Credential $cred -authentication CredSSP -scriptblock {
        $p=start-process cmd -ArgumentList "/c D:\バッチファイル1.bat" -PassThru
        $p | Wait-Process
        $p.ExitCode
    }

    【バッチファイル1.bat】

    Set 環境変数=変数内容
    call バッチファイル2.bat

    【バッチファイル2.bat】

    set 環境変数=変数内容
    start /W /B /NORMAL 実行プログラム.EXE %*

    ※ 上記start命令から/Bのパラメータを外せば、ジョブは起動されているようです。
    ※ PowerShellでは、start命令の/Bのパラメータを認識していないのでしょうか?
      /Bを付けた時とそうでないときの動作に違いはあるのでしょうか?

    よろしくお願いいたします。

    2014年10月30日 1:22

すべての返信

  • /Bを指定する辺り、「実行プログラム.EXE」はコンソールウィンドウを使用するコマンドラインアプリケーションなのでしょうか?

    であれば「start /W /B /NORMAL 実行プログラム.EXE %*」は「実行プログラム.EXE %*」で十分だったりしませんか?

    2014年10月30日 2:24
  • 佐祐理様

    その後、色々と試してみました。

    バッチファイルの起動については、オプションは/Bを付けなければ、動作は同じみたいです。

    1./Bを付けた状態で実行   →  起動ジョブが終了

    2./Bを外して実行    → 起動ジョブは終了しない

    3.2.の状態からWait-Processの記述を削除  →  起動ジョブが終了

    後だしの情報みたいになってしまって申し訳ないのですが、
    背景として、JP1というソフト(ジョブスケジューリングソフト)から、PS1を起動するのですがその際、
    Wait-Porcessを記述すると、次のジョブを起動出来ない為 | Wait-Process の記述を削除したのですが、
    そうするとPS1の終了と共に、起動したジョブも一緒に終わってしまいます。

    バッチファイルのプログラムを起動しっぱなしにしたいのですが、この書き方では無理なのでしょうか?

    【ps1ファイル】

    $password = ConvertTo-SecureString "パスワード" -asplaintext -force
     $cred = New-Object System.Management.Automation.PsCredential "ユーザーID",$password
     $exitcode = invoke-command -ComputerName 192.168.0.1 -Credential $cred -authentication CredSSP -scriptblock {
        $p=start-process cmd -ArgumentList "/c D:\バッチファイル1.bat" -PassThru
         $p | Wait-Process
         $p.ExitCode
     }

    よろしくお願いいたします。


    • 編集済み qoo_man 2014年10月30日 3:23
    2014年10月30日 3:20