Jenkins on Windows の時に、net use を使うとエラーが発生する

Jenkins のジョブで UNC パスを扱いたくて、 net use で接続しようとするとエラーとなる現象に遭遇。

指定されたログオンセッションは存在しません。そのセッションは既に終了している可能性があります。

というエラーメッセージ。色々調べたけど、結論はここにありました。

LocalSystem ユーザだと net use が使えない?そんなことはない - pudding - diary(2012-11-24)

Jenkins をサービス登録して起動していると、 LocalSystem で起動されるのでエラーとなっていたようです。

試しに

  • サービスじゃなくて jenkins.bat で起動する
  • サービスの実行ユーザーをログインユーザーなどに変更する

などしてみると確かに問題なく動きました。

いちいち起動するのは面倒、デフォルトの設定を出来るだけ崩したくない、というそれぞれの理由でこの2つの対応は却下。 上記参考サイトの通り、ユーザー名をフルパスで指定するようにプログラムを改修して乗り切りました。