この記事で言いたいこと
タイトルの通り。最初はタスクスケジューラの設定コマンドではまった話を書こうと思ってたけど、書いていくうちに解決過程のほうがおもしろいなと思って急遽変更。
スケジュール登録の省力化
ちょっと訳があって同じタスクスケジューラを複数の端末で登録する必要が出てきた。1台に登録するだけならGUIからぽちぽちやればいいんだけど複数の端末でGUIぽちぽちするのはダルいし登録ミスも絶対発生しそう…。ということでコマンドを使ってスケジューラの登録を省力化することにした
要件
- 実行するタスクはbatファイルのキック
- 5分に1回実行
- ログアウト時にも有効なスケジューラにする
この要件をもとに基本的にはMicrosoft公式のドキュメントを見ながらポチポチやっていく
ハマった箇所
ドキュメントがめっちゃ親切に書いてあるし楽勝だなと高をくくって、3分で書いたコマンドが以下
schtasks /create /tn [スケジュール名] /tr [バッチファイルのパス] /f /sc minute /mo 5
だけど、ログアウトしてるときにスケジューラが動かない…
”タスクスケジューラ ログアウト 動かない”とかでググってたんだけど全然ヒットしなくてしばらくインターネットをさまようことになる…(ググるセンスがないだけ)
助けを求めた先の海外サイト
しばらく日本語でググっていたけどなかなか良いページが見つからず…こうなったら海外のサイトに助けを求めようと思い立った。でも、そもそもなんという単語で調べればいいんだ…タスクスケジューラは英語でどういう表記なのかもいワカラナイ…
苦肉の末思いついたやり方…
"タスクスケジューラ 英語"でGoogle画像検索
なるほど…この部分は"run whether user is logged on or not"と表現されるんだな…
次は"taskscheduler run whether command"でググる。
そしたら一瞬でこちらにたどりついた
The default setting is that the task will only run when user is logged in.
Is there a way to change this setting to allow tasks to run whether user is logged on or not?
ふんふん。。何やら同じ問題に当たってるっぽいな…
It worked when I passed the user and password:
schtasks_extra = "/ru username /rp password
おおお、…/ru /rp オプションをつければうまくいく…!?!?
出来上がったコマンド
最終的に出来上がったコマンドは以下、無事にログアウト時にも有効なスケジューラを登録することができた
schtasks /create /tn [スケジュール名] /tr [バッチファイルのパス] /f /sc minute /mo 5 /ru %userdomain%\%username% /rp
学んだこと
タスクスケジューラの登録方法
何かを調べるときは、海外サイトも視野に入れていれば一瞬で解決することがある。