こんにちは! 日々のルーティンワークや深夜のバックアップ処理などを自動化してくれる、Windowsの心強い相棒「タスクスケジューラ」。私も長年愛用して業務の効率化に役立てています。
しかし、Windowsのバージョン(OS)が変わったタイミングで、「以前のWindows環境では問題なく動いていたタスクが、なぜか動かなくなってしまった……」というトラブルに遭遇したことはありませんか?
今回は、現在のWindows 10/11環境において、よく使う定番ツールやスクリプトをタスクスケジューラから「確実に」自動起動させるための設定方法を、自分への備忘録も兼ねてまとめておきます!
1. タスクスケジューラの基本設定
タスクの設定画面にある [操作] タブ ➔ [新規] を開き、操作を 「プログラムの開始」 にした上で、以下のツールごとに設定値を入力していきます。
2. ツール別・設定テンプレート
① Tera Termマクロ(.ttl)を動かす場合
Tera Termマクロをタスクスケジューラに直接登録するとうまく動かないケースがあるため、「一度バッチファイル(.bat)を経由させる」のが確実でおすすめです。
まず、以下のような中身のバッチファイルを作成します。
@echo off
START "" "C:\path\to\your_macro.ttl"
タスクスケジューラ側には、このバッチファイルを登録します。
-
プログラム/スクリプト:
作成したバッチファイル(.bat)のフルパス
② WinSCPで自動転送させる場合
FTP/SFTP転送ツールのWinSCPをCUIモードで起動し、用意しておいたスクリプト(テキストファイル)を実行させる設定です。
-
プログラム/スクリプト:
C:\Program Files (x86)\WinSCP\WinSCP.exe(※環境に合わせたexeのパス) -
引数の追加(オプション):
/console /script="C:\path\to\script.txt"
③ VBScript(.vbs)を動かす場合
VBScriptは、タスクスケジューラが標準でスクリプトエンジン(wscript.exe等)を解釈してくれるため、記述は一番シンプルです。
-
プログラム/スクリプト:
実行したいVBSファイルのフルパス
④ PowerShell(.ps1)を動かす場合【要注意!】
Windowsのセキュリティ仕様上、最も引っかかりやすいのがPowerShellです。標準ではスクリプトの実行権限が厳しく制限されているため、引数で「一時的に権限を解除して実行する命令」を明示してあげる必要があります。
-
プログラム/スクリプト:
powershell(またはpowershell.exe) -
引数の追加(オプション):
-ExecutionPolicy Unrestricted "C:\path\to\your_script.ps1"
⚠️ ここが落とし穴! 引数に
-ExecutionPolicy Unrestricted(無制限に実行を許可する設定)を書き忘れると、Windowsのセキュリティ権限に阻まれてタスクが「実行中」のままフリーズしたり、エラーで即終了したりするので注意してください。
まとめ:動かないときは「引数」を見直そう
Windowsのバージョンが上がるにつれて、特にセキュリティ周りの制約が厳しくなっています。「今まで動いていたのに!」となった場合は、プログラムのパスを直接指定するのではなく、「本体のプログラム(exe)を呼び出して、引数にファイルのパスを渡す」という書き方に変えてみると、すんなり動くことが多いです。
自動化タスクがうまく動かなくて困っている方は、ぜひこの設定メモを参考に設定を見直してみてくださいね!
