web-dev-qa-db-ja.com

Jenkinsを介してpsexecを使用してリモートバッチファイルを実行すると失敗する

Jenkinsを介してpsexecを使用してリモートバッチファイルを実行すると失敗します。スレーブからpsexecを使用して同じバッチファイルを実行すると、チャームなしで直接機能します。

もう少し情報を提供させてください。 Jenkinsとそのスレーブは、ターゲットマシンとは別のドメインにあります。

このようにバッチファイルを実行すると:

"D:\Temp\PsTools\PsExec.exe" \\<targetmachine> -u <targetdomain\targetdomainuser> -p <pwd> -accepteula  "d:\temp\remotescript.bat" arg1 arg2

スレーブから直接(リモートデスクトップがマシンを引き継ぎ、コマンドプロンプトを開く)、これは完全に機能します。

JenkinsのWindowsバッチビルドステップに入力すると、表示される出力はなく、スピナーが表示されますが、何も起こらず、ビルドが他のビルドのキューに入れられて大量のバックログが作成されます。どうやら、Jenkinsユーザーがターゲットマシンにログオンしようとする失敗監査が表示されますが、ターゲットマシンの管理者権限を持つドメインユーザー(ターゲットマシンのドメインのドメインユーザー)を指定しました。

ユーザーが提供されたもの以外の資格情報でログオンしようとする理由と、これがJenkinsスレーブから直接実行して機能する理由を誰かが知っていますか?

または、これを実現する他の方法(リモートマシンでバッチファイルを実行する)は大歓迎です。

12

これはpsexecの悪名高い問題です。

http://forum.sysinternals.com/psexec-always-hangs-when-run-from-Java_topic5013.html

PsExecを通過するとプログラム出力が失われます

XCmdで試すことができます: http://feldkir.ch/xcmd.htm (ローカルホストに対しては機能しません)

6
npocmaka

PAExecはPSExecの機能クローンであり、Jenkinsなどを介して出力を表示できます

http://www.poweradmin.com/paexec/

XCmdはHPで使用したものですが、何らかの理由で現在のギグでは機能していません。

PAExecがいつ登場したかはわかりませんが、理想的な解決策のようです。それを発見してすぐに(今日)、非常に長くて複雑なJenkinsデプロイメントパイプラインで断続的な問題を突き止めました。

6
Paul Lockwood

これを試してください、これはうまくいきます

"D:\Temp\PsTools\PsExec.exe" \\\\remoteMachine -u username -p password /accepteula -h cmd /c "C:\remotescript.bat"
2
Ashoka