2018年1月23日火曜日

タスクスケジューラの怪

題名ほど怪しいもんではないんですが、タスクスケジューラに関しての備忘録をば。
 
動作している環境は省きますが、あるネットワーク上で、NASからアプリケーションの設定を更新する必要とログを取集する必要があり、Windows7でタスクスケジューラを使ってました。
具体的には、タスクスケジューラでバッチファイルからPowerShellのスクリプト本体をキックしていたんですね。
・設定の更新(起動時)
  a.bat
  b.bat → (b.ps1をキック→設定ファイルの日付が新しくなっていれば更新exeを起動)
  c.bat
・ログの収集(ログイン後一定のアイドル時間があれば)
  a.bat
  d.bat → (d.ps1をキック→ログの収集exeを起動)
  c.bat
a.batとc.batは、NASへのネットワークドライブ接続と切断をバッチ化したものです。
設定及びログデータが入ったフォルダをいつでも見られるようにするのは嫌だったのと、netコマンドでの接続なら、NASのリプレイスの際にもUNCとか気にしなくて、IPだけザクっと変えればいいからクライアントを触る手間が省けるだろうというのもあって、こんな感じの運用となりました。
これが、windows10に移すと動かない・・・
何故だ!
3日間、悩みました。
最初は、ユーザーの権限関係の扱いが変更されてて動かなくなったのかと思い、ひたすら権限の設定を色々変えて試行錯誤していましたが、完全に無駄足だったようです。
色々調べていくと、Windows10のタスクスケジューラで複数のバッチファイルを並べた際に、1つ目のバッチファイルが終了した段階でタスクのインスタンスを終えてしまうというのがあるようですな。
これはバグではなく、7からの仕様変更のようで、公式なアナウンスも無いようでした。
意外と盲点かも。
結局、それぞれキックするバッチファイルに接続と切断を入れ込み、無事動作するようになりました。
しかし、何という細かい部分に罠を仕込むんだ・・・
恐るべし、マイクロソフト!!
 

0 件のコメント:

コメントを投稿