LoginSignup
0
0

More than 3 years have passed since last update.

JavaのProcessBuilderからPsTools(Psexec)を実行したら返ってこなかった。

Posted at

はじめに

Qiitaに初投稿。
少し前にいじった時の情報ですが、確認したら結果が変わらなかったので備忘録としてメモしておこうかと思います。
現在、作成していた環境が丸々消失したのでコードなどもあまり書けてないのはすみません。

何の話か

Javaから外部のexeやスクリプトなどを実行する「ProcessBuilder」クラスを用いて、
Microsoftから公開されている「PsTools」を直接実行したらなんか処理が返ってこなかった。

PsToolsについては以下参照
PsTools - TechNet - Microsoft

使用言語・環境

Java 8
Eclipse4.4 Luna
Apache Tomcat8.5
Windows10

経緯

とあるJavaプロジェクトを検証環境に配置して実行できる状態にするまで自動化したくて作成。
リモート環境にJavaプログラムのzipファイルをコピーする処理の実装に利用。

処理方法と結果

ProcessBuilderインスタンスから直接実行
共有フォルダから検証環境にzipファイルをコピーで配置の処理をEclipseから実行

psexec \\コピー先ホスト名 -u コピー先ドメイン\コピー先ユーザー -p コピー先pass xcopy "\\共有server\Path\JavaProject1.zip" "C:\Users\コピー先ユーザー\Path\コピー先フォルダ"

Eclipseのコンソール上に逐一情報が表示されるが、Psexecがリモート先に接続した状態で終わってしまう。
しかしファイルはコピーされていた。このままでは後続処理ができない。

解決方法
.batファイルにpsexecのコマンドを実行させて、Javaからはその.batファイルを呼び出す形にしたら返ってきた。

まとめ

原因はわからないままで申し訳ないですが、ProcessBuilderではpsexecの返り値を識別できなかったっぽいです。
なので.batに記載してその中で返り値含めて記述することで解決しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0