SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Windows Server 2016 で繰り返し実行のタスクスケジューラーのタスクを作成する際の注意点

leave a comment

Windows Server 2016 scheduled task schedule must be in future と同様の現象が発生して気づいたのですが。

Windows Server 2012 R2 では、「毎日」の実行するタスクに対して、「繰り返し間隔」を指定して、一定の間隔で実行するタスクを作成することができました。
image

スクリプトで登録する場合は、以下のような処理でしょうか、

$Argument = @"
-NoLogo -WindowStyle Hidden -ExecutionPolicy ByPass -Command "'{0} {1}' -f (Get-Date), 'えろす師匠' | Add-COntent 'C:\test.txt'"
"@
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument $Argument
$JobTrigger = New-JobTrigger -Daily -DaysInterval 1 -At "2017/1/1 0:05"
Register-ScheduledTask -TaskName "TEST" -User "SYSTEM" -RunLevel Highest -Action $Action -Trigger $JobTrigger
$Task = Get-ScheduledTask -TaskName "TEST"
$Task.Triggers.Repetition.Interval = "PT1M"
$Task.Triggers.Repetition.Duration = "P1D"
$Task | Set-ScheduledTask

 
Windows Server 2012 R2 までは上記のような処理で定期的な間隔で実行するタスクが作成できたのですが、同じスクリプトを実行して、Windows Server 2016 でタスクを作成した場合、タスクは登録され、「次回の実行時刻」にも想定した時刻が表示されるのですが、実行のタイミングになっても実行はされず、次回の実行時刻が進むというような動作となってしまいました。
これですが、新しい OS では出力のテストで使用した文字である、 えろす財閥総帥えろす師匠 が何かしらの影響を及ぼしたのかというとそういうことでもなく、現状、そういう動作になってしまっているようです。
そもそもの話として、「New-JobTrigger」を「Daily」で設定する際のオプションとして、「Repetition」周りの設定ってないんですね…。

Once であれば、設定があるのですが。
imageimage
2017/6 時点の、Windows Server 2016 で定期的に実行するタスクを作成したい場合は「Once」(1 回のみ実行) のタスクを、「無期限」に繰り返すような設定で対応する必要がありそうですね。

$Argument = @"
-NoLogo -WindowStyle Hidden -ExecutionPolicy ByPass -Command "'{0} {1}' -f (Get-Date), 'えろす師匠' | Add-COntent 'C:\test.txt'"
"@
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument $Argument
$JobTrigger = New-JobTrigger -Once -At "2017/1/1 0:05" -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([System.TimeSpan]::MaxValue)
Register-ScheduledTask -TaskName "TEST" -User "SYSTEM" -RunLevel Highest -Action $Action -Trigger $JobTrigger
$Task = Get-ScheduledTask -TaskName "TEST"
$Task.Triggers.Repetition.Interval = "PT1M"
$Task | Set-ScheduledTask

 
冒頭で紹介した、ServerFault の情報では、次のようなコメントがついています。

FYI – I have confirmed with Microsoft through a support ticket I opened yesterday that this is a bug. The support tech confirmed it is internally classified as a bug and a patch is being developed. I was given a target date of release of the patch for July/August.
This affects both Windows 10 and Server 2016. My test systems were patched through to yesterday’s cumulative update. The issue did not occur in Server 2012 R2 and Windows 7.

2012 R2 までは発生せず、それより後の OS の固有の動作みたいですね。

今後の修正プログラムで対応が行われるようではありますが、対応が行われるまでは、定期的に実行するタスクの作成方法を気を付けておきたいと思いました。

Share

Written by Masayuki.Ozawa

6月 28th, 2017 at 7:51 pm

Leave a Reply