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スレーブから直接実行して機能する理由を誰かが知っていますか?
または、これを実現する他の方法(リモートマシンでバッチファイルを実行する)は大歓迎です。
これはpsexecの悪名高い問題です。
http://forum.sysinternals.com/psexec-always-hangs-when-run-from-Java_topic5013.html
XCmdで試すことができます: http://feldkir.ch/xcmd.htm (ローカルホストに対しては機能しません)
PAExecはPSExecの機能クローンであり、Jenkinsなどを介して出力を表示できます。
http://www.poweradmin.com/paexec/
XCmdはHPで使用したものですが、何らかの理由で現在のギグでは機能していません。
PAExecがいつ登場したかはわかりませんが、理想的な解決策のようです。それを発見してすぐに(今日)、非常に長くて複雑なJenkinsデプロイメントパイプラインで断続的な問題を突き止めました。
これを試してください、これはうまくいきます
"D:\Temp\PsTools\PsExec.exe" \\\\remoteMachine -u username -p password /accepteula -h cmd /c "C:\remotescript.bat"