タスクスケジューラでPowerShell スクリプトを実行する

スポンサーリンク
  1. 動かしたいスクリプトを任意の場所に配置します。
    ※ここでは D:\tmp に配置しています。

2. タスクスケジューラを起動します。
※参考:「タスクスケジューラ」の開き方

3. 「新しいタスクの作成」をクリックする。

4. 「名前」にタスクの名前を入力後「ユーザーまたはグループの変更」をクリックします。

5. 「SYSTEM」ユーザーを指定して「名前の確認」をクリック後「OK」をクリックします。

ここで指定するユーザーがタスクスケジューラでタスクを実行するユーザー、すなわちPowershellを実行するユーザーになります。「SYSTEM」ユーザーは Windows OSのサービスを実行する特別なユーザーで以下の特徴があります。

  • OSに対して管理者権限を有する
  • パスワードを持たない

Administratorや他のユーザーを指定した場合、ユーザーのパスワード変更によりタスクが正常起動できなくなるリスクがあります。タスクスケジューラー上でも実行ユーザーのパスワード情報を保持しており、実際のパスワードとタスクスケジューラー上に登録しているパスワードが不一致となってしまうためです。

「SYSTEM」ユーザーの場合はそもそもパスワードがないので、パスワード更新によるトラブルを回避することができます。

明確な意図がなければ「SYSTEM」ユーザーを指定することをおすすめします。

6. 「トリガー」タブを選択して「新規」をクリックします。

7. タスクの実行のトリガーを設定します。
※以下の例では8月2日の午前 3時以降、毎日 3時にタスクが実行されます。

8. 「操作」タブを選択して「新規」をクリックします。

9. 以下のとおり設定をして「OK」をクリックします。

  • 操作: プログラムの開始
  • プログラム: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • 引数の追加: -ExecutionPolicy Bypass D:\tmp\test_script.ps1
    ※引数はPowerShellスクリプトのパスを指定してください

ExecutionPolicy とはPowerShell スクリプトを実行するポリシーです。今回の例ではスクリプトD:\tmp\test_script.ps1 を実行する際のポリシーとして Bypass を指定しています。 Bypass は警告などを行わずに無条件にスクリプトを実行するポリシーです。Bypass を指定することでスクリプトが正常に起動できないといったトラブルを防ぐことができます。なおここで指定したポリシーは指定したスクリプトの起動時に一時的に適用されるポリシーなので、システム全体への影響はありません。

10. 「OK」をクリックします。

11. タスクが正常に作成されたことを確認します。

※テストをしたい場合はタスクを右クリックして「実行する」をクリックして手動で実行してください。

以上。

PowerShell に関しては下記の本をお勧めしておきます。プログラミング初心者向けに丁寧に解説されています。2015年に出版された本ですが、PowerShell の基本的なコマンドはかわらないので何の問題もありません。

コメント