【Powershell】タスクスケジューラーのタスクをコマンドで登録する方法

【PR】この記事には広告を含む場合があります。

Powershell を使ってタスクスケジューラーでのタスク登録をしてみました。

サーバでのタスク登録は手動で行った方が早いと思いますが、もしタスク数が多く、検証環境とかで何度も登録しなおさないといけない場合に備えて、メモを残しておきます。

バッチファイルですと、schtasks.exe を使います。今回はPowershellコマンドレットを利用し、「タスクスケジュール登録」を確認したいと思います。

スポンサーリンク

目次

設定するべき項目を明確にする

今回、タスクをコマンドで登録します。
コマンドで実行するということは、先に内容を決めておきましょう。
タスクスケジューラーに登録する内容としては、下記の項目を試してみようと思います。

全般タスク名
タスク実行アカウント
特権の有無
トリガースケジュール(「毎日 02:00」など)
操作プログラム
引数

コマンド実行して結果を確認してみる

Powershell を管理者で実行し、見てみましょう。

呼び出し方法は、[スタートメニュー] ⇒ [Windows Powershell] と辿っていき、右クリックして、[管理者として実行] を選択します。

コマンド実行するとタスクスケジューラー関連コマンドレットが現れます。


Get-Command | ? Name  -match “ScheduledTask”
コマンドおよびオプション

サンプルスクリプト

この中で、”New-ScheduledTaskAction”、”New-ScheduledTaskTrigger”コマンドレットと “Register-ScheduledTask” でタスクを作成してみます。

◇操作の定義を設定する
まずは、「タスクで何をするか」を決めていきましょう。
Powershellスクリプトの実行する際での注意点は、プログラムは Powershell.exe となるのですが、必ずスクリプトファイルの引数を指定します。


Get-Command | ? Name  -match “ScheduledTask”
コマンドおよびオプション

New-ScheduledTaskAction -Execute <実行ファイル> -Argument <引数>

#サンプルコマンド
New-ScheduledTaskAction -Execute “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” -Argument “-file D:\work\test.ps1”
コマンドおよびオプション

◇実行の定義を設定する
実行スケジュールの定義です。時刻は、hh:mm:ss 表記です。
タスクは「実行スケジュールは毎日 02:00 に実行する」場合のサンプルです。

 
New-ScheduledTaskTrigger  -Daily -at <時刻>

#サンプルコマンド
New-ScheduledTaskTrigger -Daily -at “02:00:00”

#サンプルコマンド
New-ScheduledTaskTrigger  -Weekly -DaysOfWeek Sunday -at “02:00:00”
コマンドおよびオプション

補足:
日曜日とか曜日を指定しての実行は、”-DaysOfWeek” に実行曜日を記載します。

◇全体的な登録
最後にタスクスケジューラで全体的なタスクを登録します。
通常のタスクスケジューラーですと、タスクライブラリー一覧に登録されますが、フォルダ階層のように用途によって階層分けできます。
今回タスクの階層を1つ下げ、MyTaskというフォルダ配下にタスクを作成します。

タスク実行の注意点として、サーバ運用ですと、バックグラウンドタスクとして実行していることが多いので、権限を「最上位の特権」として指定します。

 
Register-ScheduledTask -Taskname <タスク名>  -User  <実行アカウント> -Password  <実行アカウントパスワード>    -RunLevel  <権限>  -Trigger <スケジュール>   -Action <実行内容>

#ユーザアカウント指定の場合
Register-ScheduledTask -TaskName “MyTask\CopyTask”  -User “Contoso\Administrator”  -Password “*********” -RunLevel highest -Trigger $TaskTrigger  -Action $TaskAction

#システム指定の場合
Register-ScheduledTask -TaskName “MyTask\CopyTask”  -User “system”  -RunLevel highest -Trigger $TaskTrigger  -Action $TaskAction
コマンドおよびオプション

まとめ

タスクスケジューラーの登録は普段あまりしないかもしれません。
サーバ構築で本番環境、検証環境など複数のタスク設定を行うときや、タスクが数多くある時に利用します。
今回ご紹介したコマンド内容をバッチ化すれば、大幅に工数が削減され、ミスも減り便利かと思います。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次