連載
» 2017年02月01日 05時00分 UPDATE

Windows PowerShell基本Tips(13):【 Register-ScheduledTask 】コマンドレット――タスクスケジューラで実行する新しいタスクを作成する

本連載は、Windows PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Register-ScheduledTask」コマンドレットです。

[国井傑(Microsoft MVP for Directory Services),株式会社ソフィアネットワーク]
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「タスクスケジューラ」で実行するタスクを作成するための「Register-ScheduledTask」コマンドレットを解説します。

Register-ScheduledTaskコマンドレットとは?

 「Register-ScheduledTask」は、Windows PowerShellを利用して「タスクスケジューラ」で新しいタスクを作成するためのコマンドレットです。

 前回(New-ScheduledTaskActionコマンドレット――タスクスケジューラで実行するアクションを作成する)も紹介しましたが、PowerShellでタスクスケジューラの新しいタスクを作成する場合は、次の3つを指定する必要があります。

  • タスクを実行するための「条件
  • 実行する「アクション(プログラム)」
  • 条件とアクションを組み合わせた「タスク

 このとき、タスクを実行するための「条件(New-ScheduledTaskTrigger)」と、実行する「アクション(New-ScheduledTaskAction)」で指定した内容を利用して新しいタスクを作成するのが、今回紹介するRegister-ScheduledTaskコマンドレットです。なお、New-ScheduledTaskTriggerとNew-ScheduledTaskActionについては、本連載第11回と第12回を参考にしてください。


Register-ScheduledTaskコマンドレットの書式

Register-ScheduledTask [オプション]



Register-ScheduledTaskコマンドレットの主なオプション

 Register-ScheduledTaskコマンドレットの主なオプションは次の通りです。

オプション 意味
-TaskName タスクの名前を指定する
-Action タスク実行時に実行するプログラムを指定する
-Trigger タスクを実行する条件を指定する。省略可能
-TaskPath 作成したタスクの保存場所を指定する。省略可能
-User タスクを実行するユーザーを指定する。省略可能
-Password タスクを実行するユーザーのパスワードを指定する。省略可能


毎週金曜日の午後5時にシステム情報をファイルに格納する

 タスクスケジューラを利用して、「毎週金曜日の午後5時にシステム情報をファイルに格納する」場合、あらかじめ第11回で紹介した「毎週金曜日の午後5時に実行する」コマンドレットと、第12回で紹介した「システム情報をファイルに格納する」コマンドレットをそれぞれ実行し、その実行結果を用いてRegister-ScheduledTaskコマンドレットを実行します。

コマンドレット実行例

$task=New-ScheduledTaskAction -Execute "msinfo32.exe" -Argument "/report C:\Report\msinfo.txt" -WorkingDirectory "C:\Report"
$trigger=New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 5pm
Register-ScheduledTask -TaskName "GenerateReport" -Trigger $trigger -Action $task

 上記のコマンドレット実行例では、1行目で「システム情報をファイルに格納する」コマンドレット、2行目で「毎週金曜日の午後5時に実行する」コマンドレットを実行しています。また、1行目の内容は$task変数に、2行目の内容は$trigger変数にそれぞれ保存しています。

 そして3行目でRegister-ScheduledTaskコマンドレットを実行し、1行目と2行目の内容を組み合わせて実行するように設定しています(画面1)。

画面1 画面1 3行目のRegister-ScheduledTaskコマンドで「GenerateReport」という名前のタスクを新しく登録している

 3行目のRegister-ScheduledTaskコマンドレットでは、「-TaskName」オプションの後にタスクの名前、「-Action」オプションの後に1行目の内容($task変数)、「-Trigger」オプションの後に2行目の内容($trigger変数)をそれぞれ指定しています。



ログオン時に管理者権限でPowerShellを起動する

 タスクスケジューラを利用して「ログオン時に管理者権限でPowerShellを起動する」場合は、あらかじめ第11回で紹介した「ログオン時に実行する」コマンドレットと、第12回で紹介した「PowerShellを起動する」コマンドレットをそれぞれ実行し、その実行結果を用いてRegister-ScheduledTaskコマンドレットを実行します。

コマンドレット実行例

$task=New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command Remove-Item c:\temp\*.*"
$trigger=New-ScheduledTaskTrigger -AtLogon
Register-ScheduledTask -TaskName "CleanUpTempFolder" -Trigger $trigger -Action $task -User "System"

 上記のコマンドレット実行例では、1行目で「PowerShellを起動して、c:\tempフォルダ内のファイルを全て削除する」コマンドレット、2行目で「毎週金曜日の午後5時に実行する」コマンドレットを実行しています。また、1行目の内容は$task変数に、2行目の内容は$trigger変数にそれぞれ保存しています。

 そして3行目でRegister-ScheduledTaskコマンドレットを実行し、1行目と2行目の内容を組み合わせて実行するように設定しています(画面2)。

画面2 画面2 3行目のRegister-ScheduledTaskコマンドで「CleanUpTempFolder」という名前のタスクを新しく登録している

 3行目のRegister-ScheduledTaskコマンドレットでは、「-TaskName」オプションの後にタスクの名前、「-Action」オプションの後に1行目の内容($task変数)、「-Trigger」オプションの後に2行目の内容($trigger変数)をそれぞれ指定しています。

 その他、「-User」オプションで、タスク実行時に使用するユーザーとして「System」アカウントを指定します。Systemアカウントは管理者権限を持つアカウントで、Register-ScheduledTaskコマンドレットの中で使用する場合はパスワードの指定を必要としません。「Administrator」などの管理者ユーザーを「-User」オプションで指定するときは、「-Password」オプションでユーザーのパスワードを併せて指定する必要があります。



タスクを特定のフォルダに保存する

 前項で紹介した「ログオン時に管理者権限でPowerShellを起動する」タスクを、今度はタスクスケジューラ内の特定のフォルダに保存するように設定してみましょう。

コマンドレット実行例

$task=New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command Remove-Item c:\temp\*.*"
$trigger=New-ScheduledTaskTrigger -AtLogon
Register-ScheduledTask -TaskName "CleanUpTempFolder" -Trigger $trigger -Action $task -User "System" -TaskPath \UserDefined

 前項で紹介したタスクと全く同じですが、異なるのは「-TaskPath」オプションを指定している点です。「-TaskPath」オプションを指定すると、タスクスケジューラ内にフォルダを作成し、その中にタスクを作成します(画面3)。

画面3 画面3 「UserDefined」フォルダにCleanUpTempFolderタスクが保存されるように登録している

 このコマンドレット実行例では、「-TaskPath」オプションで「\UserDefined」と指定しており、タスクスケジューラのルート(¥)の下に「UserDefined」という名前のフォルダを作成し、その中にタスクを登録するように指定しています、画面4)。

画面4 画面4 タスクスケジューラ画面では「UserDefined」フォルダにCleanUpTempFolderタスクが登録されていることが確認できる


筆者紹介

国井 傑(くにい すぐる)

株式会社ソフィアネットワーク取締役。1997年よりマイクロソフト認定トレーナーとして、Active DirectoryやActive Directoryフェデレーションサービス(AD FS)など、ID管理を中心としたトレーニングを提供している。2007年よりMicrosoft MVP for Directory Servicesを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

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

メールマガジン登録

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