ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【PowerShell】PowerShellでタスクスケジューラの登録/削除を行う

 以前タスクスケジューラの記事を書きました。

 その中でxmlファイルでタスク情報を保存できることを書きましたが、今回はそのxmlファイルを使用してPowerShellでタスク登録を行う方法、そして削除する方法になります。
 厳密にはWindowsコマンドを使っていますが、ps1ファイル内で記述しても使えるのでまとめてPowerShellということで話を進めていきます。


 では、始めます。


1:PowerShellでのタスクスケジューラへのタスク登録
 PowerShell、というかWindowsコマンドでのタスク登録、削除方法は以下の通りです。

・タスク登録

schtasks /create /tn [タスク名] /xml [タスクxmlのファイルパス]

・タスク削除(強制)

schtasks /delete /tn [タスク名] /f

 これらタスクスケジューラに変更を加えるコマンドは、実行時に管理者権限が必要らしいので注意してください。


2:サンプルコード
 書き方がわかったので実際に動かしてみます。「テストタスク」というタスク名でそのタスク情報が保存されているxmlファイル名が「テストタスク.xml」、そしてそのxmlファイルがps1ファイルと同階層にあるという前提です。

・task_test.ps1

# スクリプト実行場所のフォルダ取得
$currentDir = Split-Path $MyInvocation.MyCommand.Path

# タスク名を設定
$taskname = "テストタスク"

# タスク登録
schtasks /create /tn $taskname /xml "${currentDir}\テストタスク.xml"

# タスクが存在すれば強制削除
if ((Get-ScheduledTask -TaskName $taskname)) {
  schtasks /delete /tn $taskName /f
}


 このコマンドを実行すると一度タスク登録をして削除をするという流れになります。
 タスク削除部分をコメントアウトするとタスクが登録された状態のままになります。


 以上がPowerShellでタスクスケジューラの登録/削除を行う方法になります。

 別のPCにあるオリジナルのタスクをまとめて登録したい場合などは、このようにPowerShellから登録する形にすると楽かもしれません。


・参考資料