Что было. Задача с триггером «Ежедневно» и параметром «Повторять каждые 5 минут в течение: бесконечно» на Windows Server 2019 показывает корректное «Время следующего запуска», это время наступает, поле «Время последнего запуска» не меняется, программа не выполняется, ошибок в истории нет. На Windows Server 2012 и 2008 та же задача работала годами. Тема собрала более двадцати подтверждений на 2019, 2022 и клиентских системах.
Что помогло (подтверждено многими). Сменить триггер:
- Триггер: «По расписанию» → «Однократно», дата и время в прошлом или ближайшее.
- Дополнительные параметры: «Повторять задачу каждые: 5 минут», «в течение: бесконечно».
Такая задача повторяется без ограничений. Второй вариант, работавший до осенних обновлений 2023 года: «Ежедневно» с повтором каждые N минут «в течение: 1 день»; после обновлений участники сообщали, что надёжно работает только «Однократно». Официального исправления или объяснения производитель в теме не дал.
Почему так. Логика вычисления следующего запуска для повторяющихся триггеров изменилась начиная с 2019; комбинация «ежедневно + бесконечно» приводит к тому, что служба рассчитывает время, но не ставит задачу в очередь. Это выглядит как «висит в состоянии Готово».
Как переделать существующие задачи скриптом (если их много):
Get-ScheduledTask | Where-Object { $_.Triggers | Where-Object { $_.Repetition.Duration -eq '' -and $_.CimClass.CimClassName -eq 'MSFT_TaskDailyTrigger' } } |
Select TaskPath, TaskName
покажет кандидатов; для каждой задачи создать новый триггер New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 5) и Set-ScheduledTask -Trigger.
Как проверять любую задачу после изменений. Включить историю («Включить журнал всех задач» в правой панели), дождаться двух интервалов и посмотреть события 100/102 (запуск/завершение) и 107 (сработал триггер). Если 107 есть, а 100 нет, дело в условиях запуска (питание, простой, сеть); если нет и 107, дело в триггере.
Замечание про «бесконечно» вообще. Для задач, которые должны работать постоянно с интервалом в минуты, часто лучше служба (или скрипт с циклом под nssm/собственной службой), чем планировщик: нет накладных расходов на запуск процесса, проще контролировать одиночный экземпляр и логировать.
Типы триггеров описаны в документации Microsoft.