WindowsのタスクスケジューラーでPowerShellのスクリプトを実行する際には「パス」に注意Tech TIPS

PowerShellスクリプトファイルとタスクスケジューラーを組み合わせれば、Windows環境での複雑な定型業務を自動化できる。ただ、タスク登録時のプログラムパスの指定に気を付けないと、予期せぬトラブルが生じることがある。

» 2014年12月03日 19時30分 公開
[島田広道デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象ソフトウェア:Windows 7/Windows 8/Windows 8.1/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2、PowerShell



解説

 Windowsでちょっと複雑な処理を自動的に実行するには、バッチファイルの代わりにPowerShellが利用できる。一連の処理をPowerShellの書式で記述して.ps1ファイル(PowerShellスクリプトファイル)に保存しておけば、いつでも簡単に同じ処理を実行できるようになる。PowerShellの基本的な使い方については、右上の関連記事を参照していただきたい。

 このPowerShellスクリプトファイルをWindowsのタスクスケジューラーと組み合わせれば、バッチでは難しかった複雑な定型業務を定期的に繰り返し実行する、といった自動化を実現しやすくなる。しかも、どちらの機能も無償で利用できる。活用しない手はないだろう(基本的なタスク作成の手順については、右上の関連記事を参照していただきたい)。

 ただ、タスクスケジューラーのタスクとしてPowerShellスクリプトファイルを実行する場合、特に注意すべき点がある。それは実行時のカレントフォルダーを指定しても、別のフォルダーで起動してしまうという現象だ。本稿では、このトラブル対策と併せて、PowerShellスクリプトファイルのタスク作成時のポイントを説明する。

操作方法

 PowerShellスクリプトファイルをタスクスケジューラーで繰り返し実行するには、そのスクリプトファイルをタスクとして登録する必要がある。そのタスクの作成手順は、「一部」を除いて次のTIPSで説明している手順と共通だ。

 異なっている「一部」とは、実行するプログラム/スクリプトの指定方法だ。タスクスケジューラーのGUIでは、以下の画面やダイアログにその設定項目がある。

  • 「基本タスクの作成」ウィザード: 「プログラムの開始」画面
  • 「タスクの作成」: [操作]タブで[新規]ボタンを押すと表示される「新しい操作」ダイアログ

 そこで以下の内容を各設定項目に記入する。

設定項目名 内容
プログラム/スクリプト %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加 -Command "<.ps1ファイルのパス> <.ps1に必要なパラメーター>"
カレントフォルダー内に存在する.ps1ファイルを指定する場合は、「.\<.ps1ファイル名>」とする(先頭に「.\」を付ける)。そうでない場合はフルパス名で指定する
開始 <このスクリプトが実行されるときのカレントフォルダー名>
省略すると「%SystemRoot%\System32」がカレントフォルダーになる
ダブルクオート(二重引用符)でくくらないこと
PowerShellスクリプトファイルのタスクで設定すべき項目

 ポイントは[プログラム/スクリプト]に、PowerShellの実行ファイルである「powershell.exe」のフルパス名を記入することだ。単に「powershell.exe」と指定すると、.ps1ファイル自体は起動されるものの、「開始」で指定したフォルダーではなく別のフォルダー(%SystemRoot%\System32)が実行中のスクリプト(タスク)にとっての「カレントフォルダー」になってしまう。

 また、タスクの「カレントフォルダー」([開始]で指定する場所)に存在する.ps1ファイルを実行する場合は、[引数の追加]で、「-Command ".\automation.ps1"」というように、カレントフォルダーを表す「.\」をパスの先頭に指定すること。省略するとエラーになってしまう。カレントフォルダー以外に存在する場合は、フルパス名で指定する。

「基本タスクの作成」ウィザードの「プログラムの開始」画面 「基本タスクの作成」ウィザードの「プログラムの開始」画面
これはウィザード形式でタスクを作成する際、その途中で表示される画面(ウィザードの起動手順は前述の関連記事を参照)。三つの設定項目を、上表のように設定する。

 ウィザードを使わずにタスクを作成する際に、プログラムのパスなどを設定する手順を以下に記す。

ウィザードを使わずに「タスクの作成」でタスクを作成する場合の手順(その1) ウィザードを使わずに「タスクの作成」でタスクを作成する場合の手順(その1)
「基本タスクの作成」ウィザードを使わずにタスクを作成するには、以下の手順を実行する。
  (1)これをクリックすると「タスクの作成」ダイアログが表示される。
次へ
ウィザードを使わずに「タスクの作成」でタスクを作成する場合の手順(その2) ウィザードを使わずに「タスクの作成」でタスクを作成する場合の手順(その2)
  (2)[操作]タブを選ぶ。
  (3)[新規]ボタンをクリックすると「新しい操作」ダイアログが表示される。
次へ
ウィザードを使わずに「タスクの作成」でタスクを作成する場合の手順(その3) ウィザードを使わずに「タスクの作成」でタスクを作成する場合の手順(その3)
前述の表のように各設定項目を指定する。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。