PowerShellでタスクスケジューラを追加する
トリガー応用編
今回はPowerShellでタスクスケジューラのトリガーを定義するNew-ScheduledTaskTriggerコマンドを利用した利用例をご紹介します。
PowerShellでタスクスケジューラを登録する基本的な方法についてはこちらの記事をご確認ください。
設定例
2022年8月15日14時に一度だけ実行します。
$Trigger = New-ScheduledTaskTrigger -Once -At "2022/8/15 14:00"
毎日午前10時に実行します。
$Trigger = New-ScheduledTaskTrigger -Daily -At 10:00
毎週月曜日の午前9時から実行します。
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 9:00
毎週月水金曜の13時から実行します。
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek @("Monday","Wednesday","Friday") -At 9:00
毎週月水金曜の13時から実行します(数値指定、場合によってはこちらのほうが楽かも)。
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek @(1,3,5) -At 9:00
毎週月曜日の午前9時からと毎週金曜日の17時から実行します。
$Trigger1 = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 9:00
$Trigger2 = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 17:00
$Trigger = @($Trigger1,$Trigger2)
任意のユーザーでログオンしたら実行します(Register-ScheduledTask実行時に管理者権限が必要)。
$Trigger = New-ScheduledTaskTrigger -AtLogOn
現在ログインしているユーザーでログオンしたら実行します(管理者権限不要、非ドメイン環境)。
$Trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:username
現在ログインしているユーザーでログオンしたら実行します(管理者権限不要、ドメイン環境)。
$Trigger = New-ScheduledTaskTrigger -AtLogOn -User (whoami)
Windowsが起動したら実行します(Register-ScheduledTask実行時に管理者権限が必要)。
$Trigger = New-ScheduledTaskTrigger -AtStartup
10分間隔で無期限に実行します(タスク登録から起算して10分ごと)。
$Trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 10) -At (Get-Date) -Once
午前8時から1時間ごとに無期限で実行します。
$Trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Hours 1) -At 08:00 -Once
10分間隔で8時間、実行します。
$Trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Hours 8) -At (Get-Date) -Once
毎日1回、17時から18時の間のどこかでランダムに実行します。
$Trigger = New-ScheduledTaskTrigger -RandomDelay (New-TimeSpan -Hours 1) -Daily -At 17:00
PCが起動してから10分以内のどこかで1回、実行します(Register-ScheduledTask実行時に管理者権限が必要)。
$Trigger = New-ScheduledTaskTrigger -RandomDelay (New-TimeSpan -Minutes 10) -AtStartup
2022年9月1日から9月30日の間だけ現在ログインしているユーザーでログオン時に実行します(XMLの書式に合わせるためごちゃごちゃなんかやってます)。
$Trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
#アクティブ化の時刻設定
$StartBoundaryDT = [DateTime]"2022/9/1"
$StartBoundaryDT = $StartBoundaryDT.AddHours(-9)
$StartBoundary = $StartBoundaryDT.ToString("yyyy-MM-dd") + "T" + $StartBoundaryDT.ToString("HH:mm:ss") + "Z"
$Trigger.StartBoundary = $StartBoundary
#有効期限の時刻設定
$EndBoundaryDT = [DateTime]"2022/9/30 23:59:59"
$EndBoundaryDT = $EndBoundaryDT.AddHours(-9)
$EndBoundary = $EndBoundaryDT.ToString("yyyy-MM-dd") + "T" + $EndBoundaryDT.ToString("HH:mm:ss") + "Z"
$Trigger.EndBoundary = $EndBoundary
2022年9月1日から9月30日の間だけ1日1回、午前9時に実行します。
$Trigger = New-ScheduledTaskTrigger -Daily -At "2022/9/1 09:00"
#有効期限の時刻設定
$EndBoundaryDT = [DateTime]"2022/9/30 23:59:59"
$EndBoundaryDT = $EndBoundaryDT.AddHours(-9)
$EndBoundary = $EndBoundaryDT.ToString("yyyy-MM-dd") + "T" + $EndBoundaryDT.ToString("HH:mm:ss") + "Z"
$Trigger.EndBoundary = $EndBoundary
まとめ
- PowerShellでいろんなタスクのトリガーが定義できます
- 一部、ScheduledTaskTriggerコマンドでは設定できないトリガーもあります