トリガーはログイン時、アクションはPowerShellスクリプト

前回はWindowsに備わる「タスクスケジューラ」という機能を紹介すると共に、「タスク」という概念がどのような情報で構成されているかを説明した。ウィザードを使えばタスクを追加するのは簡単だが、今回はあえて使わずにタスクを作成し、動作を確認してみよう。

まず、すごくシンプルなPowerShellスクリプトを作成する。今回は、次のようにメモ帳を起動するだけのPowerShellスクリプトを用意した。このスクリプトのファイル名は「runcmd.ps1」としておく。

& notepad

このruncmd.ps1を実行するのが「アクション」だ。

トリガーとしてはユーザーがサインイン(ログオン)したときに実行されるというものにしておく。トリガーとして何を設定しても良いのだが、サインアウトしてサインインすれば実行されるので、便利なのだ。ほかのプログラムも動作していないので、余計な影響を避けることができ、いろいろ試してみるには都合が良い。

「操作」→「タスクの作成」

それではタスクを作成しよう。タスクスケジューラを起動し、「操作」→「タスクの作成」を選択して、タスクの作成ダイアログを立ち上げる。

  • タスクスケジューラ

    タスクスケジューラ

  • 「操作」→「タスクの作成」で「タスクの作成」ダイアログを起動

    「操作」→「タスクの作成」で「タスクの作成」ダイアログを起動

まず、タスクに名前を受ける。わかりやすい名前を付けておくとよい。セキュリティオプションを変更しても良いが、まずはそのままデフォルトで作成する。

  • タスクの作成:全般:名前ーわかりやすい名前を入力する

    タスクの作成:全般:名前ーわかりやすい名前を入力する

「トリガー」タブを選択し、「新規」を選択してトリガーを作成する。

  • タスクの作成:トリガー

    タスクの作成:トリガー

最初はタスクの開始条件が「スケジュールに従う」になっていると思うので、これを「ログオン時」に変更する。

  • タスクの作成:トリガー:新規:タスクの開始ースケジュールに従う

    タスクの作成:トリガー:新規:タスクの開始ースケジュールに従う

  • タスクの作成:トリガー:新規:タスクの開始ーログオン時

    タスクの作成:トリガー:新規:タスクの開始ーログオン時

詳細設定を編集してもよい。動作を確認したいだけなので、デフォルトのままでもよいと思う。「OK」を選択してトリガーを保存する。

  • タスクの作成:トリガー:新規:OK

    タスクの作成:トリガー:新規:OK

次に「操作」タブを選択し、「新規」を押して操作(アクション)の追加を行う。

  • タスクの作成:操作:新規

    タスクの作成:操作:新規

  • タスクの作成:操作:新規:新しい操作

    タスクの作成:操作:新規:新しい操作

作成するタスクを次のように編集する。なお、ここでは作成したruncmd.ps1が「C:\Users\daichi\runcmd.ps1」であることを前提としている。

項目 内容
操作 プログラムの開始
プログラム/スクリプト "C:\Program Files\PowerShell\7\pwsh.exe"
引数の追加 Command "C:\Users\daichi\runcmd.ps1"
開始 C:\Users\daichi
  • タスクの作成:操作:新規:新しい操作:OK

    タスクの作成:操作:新規:新しい操作:OK

PowerShellスクリプトをアクション(操作)として追加する際のポイントは、プログラム/スクリプトにPowerShellそのものを指定し、引数に作成したスクリプトのパスを指定する点にある。「開始」に指定してあるパスは最初にプログラムが実行される場所だと思っておけば良いだろう。作成したら「OK」を押して次へ進む。

  • タスクの作成:操作

    タスクの作成:操作

条件タブと設定タブでタスク開始時の条件やタスクが失敗したときの動作などを指定する。最初はここはデフォルトのままにしておいてよい。実際に使い出してみて、不具合が発生したらこの部分を編集していく。

  • タスクの作成:条件

    タスクの作成:条件

  • タスクの作成:設定

    タスクの作成:設定

ここまで作業したら「OK」を押してタスクを保存だ。次のようにタスクマネージャに作成したタスクが追加されていることを確認する。

  • タスクマネージャで追加したタスクを確認

    タスクマネージャで追加したタスクを確認

次に動作を確認してみよう。

作成したタスクの動作を確認

作成したタスクのトリガーは「ログオン」なので、ここで一旦ログアウトして、再度サインイン(ログオン)する。次のようにメモ帳が自動的に起動してくれば、作成したタスクの動作確認は完了だ。

  • ログアウト→ログオンで作成したタスクの動作を確認

    ログアウト→ログオンで作成したタスクの動作を確認

今回はログオンをトリガーとして使ったが、時間をトリガーにして動作させることもできる。つまり、ユーザーが意識していないところで自動的に仕事をさせることもできるのだ。

LinuxやUNIX系のOSでは、「cronでシェルスクリプトを自動的に動かす」といった処理をすることがあるが、タスクスケジューラを使えば同じようなことができる。特にサーバでは便利な機能なのだが、もちろんデスクトップで使っていても何かと使える機能だ。

効率良く手を抜いていくためにも、タスクスケジューラの活用はぜひともマスターしたい。自動的にスクリプトを走らせることで、さまざまな“手抜き”が可能になる。

参考