Планировщик заданий (Windows)
Планировщик заданий (ранее также «Запланированные задания») — системная служба в операционных системах Microsoft Windows, предназначенная для запуска программ и скриптов в заранее определённое время или через определённые интервалы[1].[2] Впервые компонент был представлен компанией Microsoft в дополнительном пакете Microsoft Plus! для Windows 95 под названием «System Agent»[3]. Основной компонент реализован в виде одноимённой службы Windows[4]. Инфраструктура Планировщика заданий лежит в основе функции запланированных задач в Windows PowerShell, появившейся начиная с PowerShell версии 3[5].
Планировщик заданий можно сравнить с cron или anacron в Unix-подобных операционных системах. Данная служба не должна путаться с планировщиком задач операционной системы в ядре, который отвечает за распределение ресурсов процессора между уже выполняющимися процессами.
Общие сведения
| Планировщик заданий | |
|---|---|
| Тип | сервис Windows |
| Разработчик | Microsoft |
| Написана на | C++ |
| Первый выпуск | 1995 |
| Сайт | docs.microsoft.com/en-us… |
Версии
Планировщик заданий 1.0 входит в состав Windows NT 4.0[6] (с Internet Explorer 4.0 и новее), Windows 2000[6], Windows XP[7] и Windows Server 2003[8]. Он реализован как служба Windows, а определения и расписания заданий хранятся в бинарных файлах с расширением .job. Управление заданиями осуществляется путём работы с этими файлами; каждое задание соответствует одному действию. В Windows 95 (с Internet Explorer 4.0 и новее), Windows 98 и Windows Me Планировщик заданий работает как обычная программа — mstask.exe. В Windows 95 и Windows 98 отображается пиктограмма в области уведомлений, в Windows Me работает как скрытая служба, которую при необходимости можно вывести в трее[9]. Доступ к службе программным способом осуществляется через шесть COM-интерфейсов[10]. Microsoft предоставляет DLL-агент для планирования, пример VBScript-сценария и файл настроек для автоматизации работы Планировщика[11].
Помимо графического интерфейса для управления из Панели управления, Windows предоставляет две командные утилиты: at.exe (устаревшая)[12] и schtasks.exe[4].[13][14] Однако at.exe не может управлять задачами, созданными или изменёнными через Панель управления или schtasks.exe[15]. Кроме того, задачи, созданные через at.exe, по умолчанию не являются интерактивными; для интерактивного выполнения эту опцию необходимо явно включать. Бинарные файлы заданий, создаваемые командой AT, размещаются в каталоге %WINDIR%\Tasks[16].[17]
Планировщик заданий 2.0 был представлен в Windows Vista[18] и включён также в Windows Server 2008[19].[8] Обновлённый графический интерфейс теперь построен на основе Консоли управления (MMC). Помимо запуска заданий по расписанию или по интервалам времени, версия 2.0 поддерживает триггеры на события, например — запуск задания при появлении определённой записи в журнале событий, либо при срабатывании набора событий. Несколько заданий, вызванных одним событием, можно запускать одновременно или в заданной последовательности (цепочкой действий), не создавая для этого отдельных объектов. Можно конфигурировать задания для запуска при наступлении определённых состояний системы (например, простаивание в течение некоторого времени, запуск системы, выход из системы, только в один из периодов и т. д). Возможна фильтрация событий журналов с помощью выражений XPath, а также задержка выполнения после срабатывания триггера или повтор запуска при неудачах. Помимо запуска приложений, действие, связанное с триггером, может быть произвольным (отправка письма, показ окна сообщения, вызов COM-обработчика и пр.); возможны кастомные действия через API. Планировщик поддерживает ведение журнала всех запусков[20]. В Windows Vista Планировщик используется для запуска ряда системных заданий[21]; при этом отключить службу Планировщика более нельзя (кроме как с помощью изменений в реестре).
API версии 2.0 позволяет программам и скриптам создавать задания[19].[22] Он включает 42 COM-интерфейса[23]. Стандартная Windows API не содержит .NET-обёртки для работы с Планировщиком, однако существуют сторонние реализации с открытым исходным кодом[24]. Файлы заданий версии 2.0 основаны на XML и доступны для просмотра, совместимы со схемой Task Scheduler[19].[22]
- Новые механизмы безопасности: хранение паролей на автономных компьютерах через Credential Manager, а на машинах в домене — через Active Directory, чтобы затруднить их получение; выполнение заданий для разных пользователей теперь происходит в отдельных сессиях.
- Возможность «будить» компьютер для выполнения задания (по таймеру BIOS или удалённо), а также продолжить выполнение отложенного задания после включения.
- Возможность создавать задания, привязанные к событиям напрямую из Просмотра событий.
Задания
Планировщик управляет объектами «задание» (Task), под которыми понимается действие или цепочка действий, привязанная к одному или нескольким триггерам. Задание определяется набором действий (например, запуск приложения или выполнение пользовательского скрипта) и триггеров (по времени или событию), а также метаданными, определяющими, как будет осуществляться его запуск — включая учётную запись. Файлы заданий сериализуются в формате .job и хранятся в специальной системной папке Task Folder с подкаталогами. Программный доступ к заданиям осуществляется через интерфейсы ITaskFolder и IRegisteredTask или соответствующие объекты в сценариях[25].
Колонка «Последний результат»
В столбце «Последний результат» отображается код завершения задания. Типовые коды для запланированных заданий:[26][27]
- 0 или 0x0: Операция успешно завершена.
- 1 или 0x1: Вызвана некорректная или неизвестная функция.
- 2 или 0x2: Файл не найден.
- 10 или 0xa: Некорректное окружение.
- 0x00041300: Задание готово к запуску при следующем времени по расписанию.
- 0x00041301: Задание в данный момент выполняется.
- 0x00041302: Задание отключено.
- 0x00041303: Задание ещё не запускалось.
- 0x00041304: Для данного задания больше нет запланированных запусков.
- 0x00041305: Не настроены необходимые параметры для запуска этого задания.
- 0x00041306: Последний запуск задания был прерван пользователем.
- 0x00041307: Нет триггеров либо все имеющиеся триггеры отключены или не настроены.
- 0x00041308: Для событийных триггеров не задано время запуска.
- 0x80010002: Вызов был отменён фильтром сообщений.
- 0x80041309: Не найден триггер задания.
- 0x8004130A: Не все обязательные свойства для запуска задания заданы.
- 0x8004130B: Нет выполняющихся экземпляров задания.
- 0x8004130C: Служба Планировщика заданий не установлена на этом компьютере.
- 0x8004130D: Не удалось открыть объект задания.
- 0x8004130E: Объект некорректен либо не является заданием.
- 0x8004130F: В базе безопасности Планировщика не найдены сведения об аккаунте для указанного задания.
- 0x80041310: Не удалось определить наличие указанной учётной записи.
- 0x80041311: Обнаружена повреждённая база безопасности Планировщика заданий.
- 0x80041312: Службы безопасности Планировщика доступны только в Windows NT.
- 0x80041313: Версия объекта задания не поддерживается или некорректна.
- 0x80041314: Для задания установлено неподдерживаемое сочетание параметров учётной записи и времени запуска.
- 0x80041315: Служба Планировщика заданий не запущена.
- 0x80041316: В XML задачи обнаружен неожиданный узел.
- 0x80041317: В XML задачи обнаружен элемент или атрибут из неожиданного пространства имён.
- 0x80041318: В XML задачи некорректно отформатировано или задано недопустимое значение.
- 0x80041319: В XML задачи отсутствует обязательный элемент или атрибут.
- 0x8004131A: XML задачи повреждён.
- 0x0004131B: Задание зарегистрировано, но не все заданные триггеры будут его запускать.
- 0x0004131C: Задание зарегистрировано, но его запуск может завершиться неудачей. Необходимо включить право интерактивного входа для пользователя.
- 0x8004131D: В XML задачи слишком много однотипных узлов.
- 0x8004131E: Задание нельзя запустить после окончания границы триггера.
- 0x8004131F: Экземпляр этого задания уже выполняется.
- 0x80041320: Задание не будет запущено, если пользователь не вошёл в систему.
- 0x80041321: Образ задания повреждён или модифицирован.
- 0x80041322: Служба Планировщика заданий недоступна.
- 0x80041323: Планировщик в данный момент слишком занят для обработки запроса.
- 0x80041324: Планировщик попытался запустить задание, но оно не было выполнено по причине ограничений, заданных в определении задачи.
- 0x00041325: Служба Планировщика попросила задание запуститься.
- 0x80041326: Задание отключено.
- 0x80041327: Свойства задания несовместимы со старыми версиями Windows.
- 0x80041328: Параметры задания запрещают запуск по требованию.
- 0x80070002: Файл задания не найден.
- 0x800710E0: Оператор или администратор отклонил запрос.
- 0xC000013A: Приложение завершено по сигналу CTRL+C.
- 0xC0000142: Не удалось корректно инициализировать приложение.
Ошибки
В Windows 2000 и Windows XP при подготовке компьютера к клонированию с помощью утилиты sysprep невозможен запуск заданий, настроенных для выполнения от имени учётной записи SYSTEM. После смены идентификатора безопасности sysprep не обновляет привязку заданий к SID, из-за чего выполнение таких заданий становится невозможным. Решить эту проблему невозможно, но можно повторно пересоздать задания вручную[28].
В Windows Vista и Windows Server 2008 может быть некорректно отображено «следующее время запуска» задания. Для устранения ошибки был выпущен патч[29].
См. также
Примечания
Для дальнейшего чтения
- Windows 10 All-in-One For Dummies. — John Wiley & Sons, 2021. — ISBN 978-1119680574.
- Windows 8.1 in Depth. — Que Publishing, 2014. — ISBN 978-0789752819.
- Windows 7 Inside Out. — Pearson Education, 2009. — ISBN 978-0735636842.
- Microsoft Windows Server 2008: The Complete Reference. — McGraw-Hill Education, 2008. — ISBN 978-0071596466.
- Special Edition Using Microsoft Windows Vista. — Que Publishing, 2008. — ISBN 978-0789737816.
Ссылки
- Документация по Task Scheduler на MSDN
- Проблемы с форматом журнала Task Scheduler — Веб-архив (16 октября 2007). Архивировано 16 октября 2007 года.
- Невозможно удалить текст из журнала Task Scheduler
- Служба Task Scheduler не запускается
- Запланированная программа не запускается в Task Scheduler — Веб-архив (21 августа 2006). Архивировано 21 августа 2006 года.
- Отключение Task Scheduler невозможно