Многие программы, особенно те из них, которые предназначенные для обслуживания Windows, имеют функцию автозагрузки, то есть могут автоматически запускаться после загрузки рабочего окружения операционной системы. Если программа не оснащена такой функцией, добавить её в автозагрузку можно вручную, разместив её ярлык в каталог startup или прописав путь к её исполняемому файлу в специальный ключ системного реестра. Отредактировав другой ключ в реестре, можно включить отсрочку старта добавленных в автозагрузку программ, если же вам нужно что-то большее, скажем, вы хотите запускать программы по расписанию или по событию, вам потребуется что-то большее. Думаете, это какая-то особо продвинутая сторонняя программа-менеджер? Ничего подобного, ведь подобная программа уже имеется в самой Windows. Называется она Планировщик заданий.
Планировщик заданий представляет собой встроенный компонент Windows, предназначенный для автоматического запуска скриптов и программ в определённое время и в определённые моменты. Появился он ещё в Windows 95, но тогда он назывался System Agent, название Task Scheduler, которое остаётся актуальным и до нынешнего дня, он получил в Windows 98. В современных версиях Windows Планировщик представлен файлом консоли Microsoft Management taskschd.msc в системном каталоге System32 и набором связанных динамических библиотек. В Windows 10 открыть Планировщик можно из меню Пуск, из результатов поиска, а также одноименной командой taskschd.msc в окошке «Выполнить».
Рабочее пространство оснастки разделено на три основные области. В левой колонке располагается Библиотека, представляющая собой древовидную иерархию каталогов, или узлов, содержащих списки заданий, созданных системными компонентами и установленными на компьютере сторонними приложениями. Средняя колонка служит для получения сведений о конкретных заданиях, в ней вы можете просмотреть описание и параметры задания, триггеры и условия его выполнения.
Если же дважды кликнуть по заданию мышкой, откроется окошко свойств, оно реже редактор, в котором можно будет изменить параметры запуска задачи. Правая колонка содержит меню операций, которые могут применены к заданиям. Вкратце рассмотрим главные из них.
- Создать (простую) задачу — служит для создания новой задачи.
- Импортировать задачу — добавляет в Планировщик задачу из XML-файла, используется для восстановления задач из резервных копий и переноса задач с одного компьютера на другой.
- Включить журнал для всех заданий — активирует функцию логирования выполняемых заданий.
- Выполнить — запускает немедленное выполнение задачи.
- Завершить — останавливает выполняемое задание.
- Отключить — временно отключает задание.
- Экспорт — сохраняет задачу в XML-файл, который может использоваться как резервная копия задания.
- Свойства — открывает окно с параметрами задания, доступными для просмотра и редактирования.
- Удалить — удаляет выбранное задание.
В верхней части окна Планировщика располагается стандартное текстовое меню, обеспечивающие доступ к базовым функциям оснастки. Особого интереса оно не представляет, так как как основная часть доступных в нём опций дублируется в правой колонке «Действия».
Каждое задание имеет набор свойств, например, свойствами являются название и описание задания. Свойства могут быть основными и дополнительными. Просмотреть и изменить их можно в упоминаемом выше окне свойств в соответствующих вкладках.
- Общие. К общим свойствам задания относится его имя, описание, права запуска, режим выполнения и учётная запись, от имени которой выполняется задание. Имя в данном примере является обязательным свойствам, тогда как описание — это свойства дополнительное, которое можно пропустить.
- Триггеры, или спусковые крючки. Триггер — это по сути событие, по которому выполняется задание. В качестве триггера может быть указано время (запуск задания по расписанию), а также определённое действие, например, загрузка или блокирование компьютера, вход пользователя в систему, создание и изменение другой задачи, подключение и отключение от пользовательского сеанса, отсутствие активности пользователя, ошибки и уведомления с определённым кодом и так далее. Особенно расширяют возможности автоматизации управления процессами триггеры, использующие системные события Журнала, которых в Планировщике заданий имеется огромное количество.
- Действия. Данное свойство определяет выполняемое в рамках созданной задачи действие — запуск программы или сценария, отправка сообщения по электронной почте или вывод уведомления (напоминания) на рабочий стол. В Windows 8.1 и 10 эти две последние функции считаются устаревшими и уже не работают, поэтому для вывода уведомлений и отправки сообщений по email Microsoft рекомендует использовать скрипты.
- Условия. Свойство «Условия» является уточняющим, оно используется как дополнение к триггерам, позволяя запускать или останавливать выполнение задания на основе длительности бездействия пользователя, режима электропитания и подключения к другой сети.
- Параметры. Дополнительная вкладка, содержащая настройки, позволяющие корректировать автоматическое выполнение заданий. Например, если при выполнении задания произойдёт сбой, активированная опция «При сбое выполнения перезапускать через» запустит задание повторно через указанный период времени.
Окно свойств также содержит ещё одну дополнительную вкладку «Журнал». Если последний включить, Windows станет журналировать выполнение заданий самим Планировщиком. Особой нужды в таком журналировании нет, поэтому по умолчанию данная опция отключена.
А теперь перейдём к практике, создав для примера задание, которое с помощью скрипта командной строки станет удалять из условной папки Temp файлы старше одной недели. Запускаем Планировщик заданий командой taskschd.msc и выбираем в правой колонке опцию «Создать задачу».
Опция «Создать простую задачу» подходит только для создания самых простых заданий, так как в этом режиме вы не сможете настраивать дополнительные параметры. В открывшемся окне даём новому заданию понятное имя и добавляем, если необходимо, комментарий. Остальные параметры можно не менять, но мы на всякий случай сделаем задание скрытым, чтобы на экране не появлялось окно командной строки (увы, окно всё равно появляется), а заодно и повысим заданию права, установив флажок в чекбоксе «Выполнить с наивысшими правами».
Теперь создадим триггер. Переключаемся на одноименную вкладку, жмём «Создать» и устанавливаем время и периодичность выполнения задания. Допустим, мы хотим, чтобы скрипт отрабатывал ежедневно в 15.00. Соответственно, тип выполнения выбираем «По расписанию», устанавливаем время, а в параметрах активируем радиокнопку «Ежедневно». Триггер создан, жмём «ОК» и переключаемся на следующую вкладку «Действия».
Точно так же жмём «Создать», в качестве действия оставляем «Запуск программы» и указываем через кнопку обзора полный путь к скрипту, содержимое которого вы можете видеть не приложенном ниже скриншоте. Готово и действие, можно переходить к следующему этапу.
В данном примере задавать дополнительные условия для такой в целом задачи нет нужды, поэтому мы пропускаем этот шаг и переключаемся на вкладку «Параметры». Здесь тоже можно ничего не менять, активируем разве что опцию запуска заданий при сбое, так, на всякий случай. Сохраняем задание и проверяем, выбрав в правой колонке Планировщика опцию «Выполнить».
А теперь рассмотрим чуть более сложный сценарий. Допустим, мы хотим, чтобы Windows выводила на рабочий стол уведомления об ошибках в работе программ или системы. Создадим новое задание и назовём его «Уведомление об ошибках».
Переключаемся на вкладку «Триггеры» и выбираем вместо «По расписанию» опцию «При событии». В параметрах выбираем «Настраиваемое» и жмём «Создать фильтр события».
Так как мы будем отслеживать ошибки, уровень события мы выбираем «Ошибка» и указываем раздел системного журнала, в который Windows записывает логи ошибок. Пусть для примера это будет «Приложения». Далее выбираем источник события — компонент операционной системы. Мы выбрали все компоненты. Код события не указываем, так как хотим отслеживать все ошибки.
Сохраняем наш фильтр, жмём «OK» и переходим на вкладку действия. Так как Windows 10 более не поддерживается вывод Планировщиком текстовых уведомлений, воспользуемся простейшим скриптом VBS. Создаём в Блокноте текстовый документ и вставляем в него код MsgBox «», прописывая между двойными прямыми кавычками текст уведомления.
Примечание: для вывода уведомлений на рабочий стол вместо скриптов можно использовать штатную утилиту msg.exe, прописав в поле «Программа или сценарий» путь C:\Windows\System32\msg.exe, а в поле аргументы вставив сообщение в формате * текст сообщения, смотрите скриншот ниже.
Сохраняем файл в формате VBS и указываем к нему путь на вкладке «Действия», указав в качестве действия запуск программы, то есть нашего скрипта.
Этого вполне достаточно, сохраняем настройки и проверяем работу скрипта. Когда какое-нибудь приложение даст сбой, Windows занесёт событие об ошибке в Журнал, Планировщик же в свою очередь перехватит это событие согласно настройкам и выполнит заданий — запустит на исполнение скрипт, который выведет на рабочий стол уведомление.
Здесь мы привели лишь два примера использования Планировщика заданий, в действительности он способен и на большее. Запускать программы строго с определённым временным диапазоном, создавать напоминания, открывать сайты, запускать задачи обслуживания системы и многое другое — всё это можно реализовать с помощью этого удобного и гибкого инструмента, не говоря уже о таком простом действии как автоматическое выключение компьютера.
Время на прочтение7 мин
Количество просмотров40K
Автоматическая установка операционных систем семейства Windows требует от системного администратора тщательной проработки всех этапов выполнения. Давно интересуюсь данной темой, однако, в ходе многолетнего опыта по созданию собственных настроенных и обновлённых сборок Windows мной был упущен аспект работы с Планировщиком заданий. Разработчики Windows закладывают задачи, выполняемые в будущем по-расписанию, но ненужные и порой вредные «рядовому» пользователю. Список этих задач предлагаю к рассмотрению и обсуждению в данной статье.
Я уже писал здесь статьи про быструю и тонкую настройку операционной системы путём применения собранных мной твиков реестра, также была серия статей посвященных работе с образом Windows посредством DISM, где выкладывались мои скрипты: добавления пакетов обновлений, отключения компонентов, удаления «магазинных» приложений, получения информации из образа Windows. Скрипт приведённый в этой статье элементарный, основной интерес направлен на сам список задач, которые я предлагаю убрать из Планировщика заданий.
Скрипт
@echo off
schtasks /Delete /tn "\Microsoft\Windows\AppID\SmartScreenSpecific" /f &rem - 9 B
schtasks /Delete /tn "\Microsoft\Windows\Application Experience\AitAgent" /f &rem 7 9 -
schtasks /Delete /tn "\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Application Experience\ProgramDataUpdater" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Application Experience\StartupAppTask" /f &rem - 9 B
schtasks /Delete /tn "\Microsoft\Windows\ApplicationData\appuriverifierdaily" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\ApplicationData\appuriverifierinstall" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\Autochk\Proxy" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Customer Experience Improvement Program\BthSQM" /f &rem - 9 -
schtasks /Delete /tn "\Microsoft\Windows\Customer Experience Improvement Program\Consolidator" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Defrag\ScheduledDefrag" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Device Information\Device" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\Diagnosis\Scheduled" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\LanguageComponentsInstaller\Installation" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\LanguageComponentsInstaller\Uninstallation" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\Maintenance\WinSAT" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Maps\MapsToastTask" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\Maps\MapsUpdateTask" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\Mobile Broadband Accounts\MNO Metadata Parser" /f &rem - 9 B
schtasks /Delete /tn "\Microsoft\Windows\MobilePC\HotStart" /f &rem 7 - -
schtasks /Delete /tn "\Microsoft\Windows\MUI\LPRemove" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\NetTrace\GatherNetworkInfo" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Power Efficiency Diagnostics\AnalyzeSystem" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\RAC\RacTask" /f &rem 7 9 -
schtasks /Delete /tn "\Microsoft\Windows\RemoteAssistance\RemoteAssistanceTask" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\RetailDemo\CleanupOfflineContent" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\SettingSync\BackgroundUploadTask" /f &rem - 9 B
schtasks /Delete /tn "\Microsoft\Windows\SettingSync\BackupTask" /f &rem - 9 B
schtasks /Delete /tn "\Microsoft\Windows\SettingSync\NetworkStateChangeTask" /f &rem - 9 B
schtasks /Delete /tn "\Microsoft\Windows\Setup\EOSNotify" /f &rem 7 9 -
schtasks /Delete /tn "\Microsoft\Windows\Setup\EOSNotify2" /f &rem 7 9 -
schtasks /Delete /tn "\Microsoft\Windows\Setup\SetupCleanupTask" /f &rem - 9 B
schtasks /Delete /tn "\Microsoft\Windows\Speech\SpeechModelDownloadTask" /f &rem - - B
schtasks /Delete /tn "\Microsoft\Windows\SystemRestore\SR" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Time Synchronization\SynchronizeTime" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\Windows Error Reporting\QueueReporting" /f &rem 7 9 B
schtasks /Delete /tn "\Microsoft\Windows\WindowsBackup\ConfigNotification" /f &rem 7 - -
schtasks /Delete /tn "\Microsoft\Windows\WS\License Validation" /f &rem - 9 -
schtasks /Delete /tn "\Microsoft\Windows\WS\WSRefreshBannedAppsListTask" /f &rem - 9 -
schtasks /Delete /tn "\Microsoft\XblGameSave\XblGameSaveTask" /f &rem - - B
schtasks /Delete /tn "\Microsoft\XblGameSave\XblGameSaveTaskLogon" /f &rem - - B
timeout 3 > nul
Использование
Запуск под учётной записью администратора приводит к выполнению последовательности команд schtasks с аргументом /Delete (удалить) последующее имя задачи за аргументом /tn. Ключ /f подавляет вывод уведомлений о подтверждении. Достаточно одного выполнения скрипта, а повторные запуски лишь отобразят список ошибок из-за невозможности удалить то, чего уже нет. Скрипт не наделён «интерактивностью», так как используется в процессе автоматической установки Windows.
Применимость
Список задач, подлежащих удалению данным скриптом, составлен для следующих версий ОС: Windows 7 Professional VL SP1 (updated Jan 2020 — End of Support), Windows 8.1 Professional VL Update3 (updated Jan 2023 — End of Support), Windows 10 v1607 Enterprise LTSB (updated Jan 2023). Изначально хотел написать отдельные скрипты для каждой версии Windows, но увидел, что список задач значительно повторяется и поэтому объединил в один. В планах добавить в список ненужные задачи из следующих версий ОС: Windows 10 v1809 Enterprise LTSC, Windows 10 v21H2 Professional BE (business editions) — на базе которых также делаю свои сборки.
Комментирование
Чтобы не запутаться в списке задач — откуда каждая из них взялась и стоит ли её удалять — в комментарии, в конце строки каждой команды можно видеть подсказку в каких версиях Windows удаляемая задача встречается. Это удобно для анализа и редактирования списка. Также присутствует алфавитная сортировка задач, с группировкой разделов по первой букве. Взгляните, в Windows 7 ненужных задач было не много — всего 22, в Windows 8.1 их уже стало 30, в Windows 10 LTSB уже 41! Страшно представить сколько «мусора» в Планировщике заданий я обнаружу в версии Windows 10 Enterprise LTSC и особенно в Windows 10 21H2.
Откуда список
Я составлял данный список путём вдумчивого чтения описания каждой задачи и анализа параметров её запуска. За дополнительной информацией обращался к источникам в Интернете, в том числе англоязычным, в том числе официальным. Не всегда мне удавалось найти однозначный ответ на вопрос: «стоит удалять данную задачу или нет?». Бывало так, что описание у задачи отсутствовало, параметры запуска скрыты, триггеры срабатывания отсутствуют, но при этом задача почему-то выполнялась. В сети Интернет не нашел аналогичного списка с развёрнутой дискуссией обсуждения целесообразности включения в него тех или иных задач.
Удаление или отключение?
Консольная команда schtasks имеет полный набор аргументов для управления Планировщиком заданий Windows. В ходе поиска информации по отдельным задачам в сети Интернет мне попадались скрипты других авторов, где ненужные задачи отключались (подаргумент /disable аргумента /Change). Я использую более радикальный подход — просто удаляю (аргумент /Delete) ненужные мне задачи. Ведь вариант «отключение» подразумевает что мне когда-нибудь понадобится включить некоторую задачу. Не представляю себе ситуацию, когда мне понадобится снова включить, например, уведомление об окончании срока поддержки или телеметрию. Что скажете?
Вердикт на удаление
Какие задачи в Планировщике заданий принимать к рассмотрению? Рассмотрим какие задачи бывают, в каком состоянии и насколько открыты. На начальном этапе были мысли написать простой скрипт, который бы удалял вообще все задачи (без разбора), но данный подход опасен тем, что может привести к снижению производительности и надёжности системы, так что пришлось разбираться. Итак:
- Состояние — Отключено
Я не включал в список на удаление задачи в состоянии «Отключено». Как правило это либо «артефакты» прошлых версий Windows, либо уже отключенные самими разработчиками посредством пакетов обновлений, либо ещё что… - Бесполезное обслуживание
Это пример задач которые запускают ежедневное/еженедельное выполнение различных служб в назначенное время, как правило ночью. Как итог, эти задачи не выполняются так как ночью мой компьютер («рядового» пользователя) отключён. Также мне не надо чтобы днём отвлекались ресурсы моего компьютера. - Телеметрия
Это страшное слово знакомо многим системным администраторам и не только. Значительная часть удаляемых по моему списку задач относится к средствам телеметрии и слежения за пользователем со стороны компании Майкрософт. Мой компьютер — это МОЙ КОМПЬЮТЕР! - «Тёмные лошадки»
Самая сложная категория задач. Как правило, много их появилось в версии Windows 10. Отличительные особенности: описание размыто или отсутствует, параметры запуска скрыты, триггеры срабатывания отсутствуют, но при этом задача каким-то чудом регулярно запускается, о чём указано в поле «Время прошлого запуска».
Обсуждение
Конечно, представленный мной список может быть не полным или наоборот избыточным. Есть вероятность, что я не распознал в какой-то задаче «скрытого пожирателя ресурсов» или наоборот включил в список задачу удаление которой скорее навредит работоспособности ОС. Прошу аргументированно высказывать своё мнение, делится опытом. В данном ключе обсуждение может начинаться по двум сценариям:
- Вы включили в список задачу «X», удаление которой приведёт к следующим негативным последствиям…
- Вы не включили в список задачу «Y», которая является вредной, так как выполняет следующие действия…
Список составлен для компьютера предназначенного для домашнего использования. Прошу к рассмотрению и обсуждению!
Как перейти от Waterfall к Agile
EggHead 06.05.2025
Каскадная модель разработки Waterfall — классический пример того, как благие намерения превращаются в организационный кошмар. Изначально созданная для упорядочивания хаоса и внесения предсказуемости. . .
Оптимизация SQL запросов — Продвинутые техники
Codd 06.05.2025
Интересно наблюдать эволюцию подходов к оптимизации. Двадцать лет назад всё сводилось к нескольким простым правилам: «Избегайте SELECT *», «Используйте индексы», «Не джойните слишком много таблиц». . . .
Создание микросервисов с gRPC и Protobuf в C++
bytestream 06.05.2025
Монолитные приложения, которые ещё недавно считались стандартом индустрии, уступают место микросервисной архитектуре — подходу, при котором система разбивается на небольшие автономные сервисы, каждый. . .
Многопоточность и параллелизм в Python: потоки, процессы и гринлеты
py-thonny 06.05.2025
Параллелизм и конкурентность — две стороны многопоточной медали, которые постоянно путают даже бывалые разработчики.
Конкурентность (concurrency) — это когда ваша программа умеет жонглировать. . .
Распределенное обучение с TensorFlow и Python
AI_Generated 05.05.2025
В машинном обучении размер имеет значение. С ростом сложности моделей и объема данных одиночный процессор или даже мощная видеокарта уже не справляются с задачей обучения за разумное время. Когда. . .
CRUD API на C# и GraphQL
stackOverflow 05.05.2025
В бэкенд-разработке постоянно возникают новые технологии, призванные решить актуальные проблемы и упростить жизнь программистам. Одной из таких технологий стал GraphQL — язык запросов для API,. . .
Распознавание голоса и речи на C#
UnmanagedCoder 05.05.2025
Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .
Реализация своих итераторов в C++
NullReferenced 05.05.2025
Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .
Разработка собственного фреймворка для тестирования в C#
UnmanagedCoder 04.05.2025
C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .
Распределенная трассировка в Java с помощью OpenTelemetry
Javaican 04.05.2025
Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .
Вы тут: Главная → Windows → Секреты планировщика заданий Windows — автоматическое обслуживание
Начиная с Windows Vista, планировщик заданий играет очень важную роль в обслуживании и оптимизации операционной системы. Сегодня я расскажу о нововведениях в автоматическом обслуживании Windows 8 и объясню, с чем они связаны.
В свое время я подробно разбирал задания, встроенные в планировщик Windows Vista, делая акцент на том, имеет ли хоть какой-то смысл их отключать. На поверку выяснилось, что таковых крайне мало. Меня не раз просили в почте сделать такой же обзор планировщика Windows 7, но я не видел в этом резона. Ведь единственным изменением было увеличившееся количество заданий по обслуживанию системы.
Однако с выходом Windows 8 появился повод вернуться к этой теме, тем более что элементы автоматического обслуживания системы появились даже в панели управления.
[+] Сегодня в программе
Панель управления
В разделе «Обслуживание» центра поддержки Windows появился новый компонент – автоматическое обслуживание.
Увеличить рисунок
Не спешите запускать обслуживание вручную, мы к этому еще придем. Давайте сначала посмотрим на его нехитрые настройки (их также можно найти в панели управления по запросу обслуживание).
Увеличить рисунок
Время запуска, бездействие и использование ресурсов ПК
Из подробного описания видно, что время запуска обслуживания можно не изменять. Оно все равно произойдет в подходящий момент, когда система перейдет в режим бездействия. Однако описание в панели управления умалчивает о том, что если вы начнете взаимодействовать с системой во время ее обслуживания, оно немедленно прекратится. И это логично, поскольку фоновые задачи могут сопровождаться интенсивной нагрузкой на диск и процессор, тем самым мешая вашей работе.
Автоматическое обслуживание Windows выполняется в режиме максимальной производительности с использованием всех системных ресурсов, чтобы завершить его как можно быстрее.
Работая в Windows, вы могли заметить по звуку и индикаторам корпуса ПК, что оставленная без присмотра система иногда демонстрирует повышенную активность процессора и диска. Но стоит вернуться к работе в системе, как эта активность немедленно идет на спад и затем прекращается. Это и есть фоновое обслуживание!
Пробуждение ПК
На параметре пробуждения системы я остановлюсь подробнее, чтобы разъяснить несколько моментов.
- Пробуждение подразумевает выход из сна, но не выход из гибернации или включение ранее выключенного ПК. Разбудив систему и выполнив обслуживание, Windows отправляет ПК обратно в сон.
- Автоматическое обслуживание учитывает различия в политике электропитания для мобильных и стационарных ПК, исходные настройки которых отличаются. Например, одной из них является пробуждение по таймеру для выполнения запланированных задач (снимок экрана сделан на ноутбуке).
Именно по этой причине на мобильных системах флажок пробуждения для обслуживания изначально снят, а на стационарных – установлен.
- Если у вас мощный компьютер, который любит пошуметь вентиляторами и посветить корпусом, лучше изменить стандартное время запуска задачи. Иначе ПК может вас разбудить в три часа ночи.
Выполнение автоматического обслуживания Windows, как и прежде, осуществляется с помощью планировщика, однако теперь там появилась новая группа заданий для этой цели.
Запланированные задания
В Windows 8/8.1 найдите в программах планировщик и перейдите в раздел Библиотека планировщика заданий — Microsoft — Windows – TaskScheduler.
В Windows 10 эти задания спрятаны из планировщика, чтобы люди не мешали обслуживанию ОС, отключая задания. Однако все они есть в реестре, поэтому особо талантливые пользователи смогут воспрепятствовать обслуживанию при желании.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\TaskScheduler
Внизу списка вы видите то самое задание Regular Maintenance, время ежедневного запуска которого можно настроить в панели управления. Обратите внимание, что в планировщике вы можете изменить расписание запуска, например, на еженедельное. Однако делать это вовсе необязательно, ибо в итоге все упирается в бездействие ПК.
Если вы запустите задание Manual Maintenance, система выполнит тот же самый набор задач по обслуживанию, что и при запуске задания по расписанию. Отличие в том, что ваше взаимодействие с системой не прервет процесс оптимизации, поскольку вы сами запустили его.
Отключенное задание Idle Maintenance любопытно тем, что система сама включает его при выполнении ручного или автоматического обслуживания. Однако других подробностей о нем мне выяснить не удалось.
Задание Maintenance Configurator, судя по нескольким триггерам, определяет список задач, обслуживающих систему.
Какие задачи выполняются для обслуживания системы
Можно выполнить обслуживание вручную из панели управления или командой MSchedExe.exe Start и посмотреть, что при этом происходит. Для полного счастья откройте сначала диспетчер задач, а заодно монитор ресурсов на вкладке «Диск».
Так, я первым делом увидел процессорную активность процесса MsMpEng.exe. Открыв Windows Defender, я убедился в том, что выполняется быстрое сканирование встроенным антивирусом. Одновременно начал мигать индикатор внешнего диска, а монитор ресурсов указал на активность в папке с изображениями. Мое предположение о том, что это дело рук истории файлов, быстро подтвердилось фильтром Process Monitor.
В любом случае вы увидите потребление ресурсов CPU процессом system, поскольку обслуживание выполняется от имени системы. В частности, в обслуживание входят еще такие задачи:
- Автоматическое создание резервной копии реестра
- Передача данных об использовании системы в рамках программы CEIP
- Отправка отчетов о неполадках
- Оптимизация и дефрагментация дисков
- Обновление поискового индекса
- Оптимизация загрузки системы
- Создание точки восстановления системы
Я сознательно не стал перечислять все задачи, поскольку вы можете вывести их список самостоятельно в PowerShell!
Get-ScheduledTask | Where-Object {$_.Settings.MaintenanceSettings}
Также в планировщике пробегитесь по папкам планировщика в разделе Windows, обращая внимание на время последнего запуска задания.
Увеличить рисунок
Если задание выполнялось вскорости после запуска Manual Maintenance, оно входит в общий список задач по обслуживанию. На рисунке выше видно несколько заданий планировщика, которые система выполнила сразу после запуска единого задания обслуживания.
Впрочем, все эти задачи вовсе необязательно выполняются в полном объеме. Если вы не участвуете в CEIP или отсутствуют новые отчеты о неполадках, то и отправлять нечего. Точно так же, если точку восстановления создавать не нужно, она не и не будет создаваться.
В чем суть изменения в автоматическом обслуживании
Ключевое различие в автоматическом обслуживании Windows 7 и Windows 8+ в оптимизации энергопотребления операционной системой!
Раньше многие задачи по обслуживанию действовали исключительно по своему расписанию и могли выполняться при работе от батареи, а теперь они привязаны к единой задаче, которая запускается в период бездействия только при питании от сети и выполняется как можно быстрее.
Это не означает, что все задания планировщика теперь выполняются только в рамках автоматического обслуживания, поскольку у них может быть определено несколько триггеров. Например, точка восстановления системы обязательно создается при установке обновлений и драйверов. Однако отсутствие триггера в задании указывает на то, что оно выполняется исключительно в рамках автоматического обслуживания.
Рисунок выше иллюстрирует одно и то же задание по резервному копированию реестра, рассказ доктора Ватсона о котором выручил немало людей, потерявших надежду на восстановление системы.
Зачем это нужно Microsoft
Продажи настольных компьютеров неуклонно снижаются, уступая место мобильным системам, и продолжение этого тренда дружно прогнозируют все аналитические агентства. Так, компания Forester Research считает, что в ближайшие три года и без того невысокая доля продаж настольных ПК дополнительно снизится за счет роста популярности планшетов, составив в итоге всего 18%.
Очевидно, при таком раскладе длительность работы устройства от батареи выходит на первый план, и эффективность операционной системы в этом аспекте очень важна. Microsoft много говорила о том, что энергопотребление Windows 8 улучшено по сравнению с Windows 7, и консолидация фоновых задач по обслуживанию ОС – это один из важных шагов в этом направлении.
При этом Microsoft не ограничивается оптимизацией фоновых задач Windows, предоставляя разработчикам, ИТ-специалистам и конечным пользователям возможность добавить свое задание к автоматическому обслуживанию системы. Дальше я покажу, как вы можете это сделать без особых усилий.
Создание своего задания, выполняющегося в рамках автоматического обслуживания
У вас есть какие-то задачи по обслуживанию Windows, выполнение которых возложено на планировщик или на сценарии входа в систему? Если они не являются интерактивными, возможно, имеет смысл перевести их в фоновый режим автоматического обслуживания. Примерами таких задач могут служить:
- очистка диска средствами системы
- удаление временных файлов скриптом по расписанию
- создание резервного образа системы утилитой recimg
Все задачи автоматического обслуживания выполняются в скрытом режиме. Например, окно командного файла появляться не будет.
Создание XML-файла
В графическом интерфейсе планировщика Windows не предусмотрена возможность включения своего задания в автоматическое обслуживание. Однако можно создать XML-файл, описывающий задание, и импортировать его в планировщик. В приведенном ниже примере файла вам нужно изменить лишь несколько параметров.
Пример XML-файла автоматического обслуживания
Файл содержит мои краткие комментарии, но ключевые моменты я опишу ниже.
Узел MaintenanceSettings
Начиная с Windows 8, в синтаксисе задания поддерживается узел MaintenanceSettings, отвечающий за автоматическое обслуживание.
<MaintenanceSettings> <Period>P1D</Period> <Deadline>P7D</Deadline> </MaintenanceSettings>
Здесь два ключевых параметра.
Period
Это частота выполнения вашего задания в рамках регулярного автоматического обслуживания. Например, P1D означает, что задание будет выполняться ежедневно, а P30D — раз в месяц.
Deadline
Это крайний срок выполнения задания. Например, P7D означает, что задание должно выполняться никак не реже, чем раз в неделю.
Если задание ни разу не запускалось во время регулярного обслуживания, система выполнит его при первом же бездействии системы. Если же ПК используется в режиме, не позволяющем системе бездействовать, в дело вступает экстренное обслуживание. В этом случае пользователь получает сообщение о том, что оно выполняется, чтобы объяснить нагрузку на диск и процессор.
В рамках экстренного обслуживания выполняются все задачи, входящие в список автоматического обслуживания. Однако пропущенное задание всегда выполняется первым.
Узел Exec
Этот узел присутствовал и раньше, обозначая команду и параметры командной строки. Вы можете указать любой исполняемый файл, в т.ч. скрипт.
<Exec> <Command>cmd</Command> <Arguments>/c echo %date% %time% >> "%windir%\temp\test.txt"</Arguments> </Exec>
В моем примере дата и время выполнения команды просто записываются в текстовый файл во временной папке, что удобно для тестирования.
Импорт задания в планировщик и проверка его работы
Импорт задания выполняется одной командой:
schtasks.exe /create /tn "Имя задания" /xml "Полный путь к XML-файлу"
После чего задание отображается в библиотеке планировщика.
Вы можете проверить работу задания, выполнив его прямо в планировщике или из командной строки:
schtasks.exe /Run /tn "Имя задания"
Остается лишь убедиться в том, что задание выполняется в рамках автоматического обслуживания. Если вы не хотите ждать, пока оно отработает в соответствии с вашими условиями, форсируйте автоматическое обслуживание запуском задания Manual Maintenance в планировщике или из консоли:
schtasks.exe /Run /tn "\Microsoft\Windows\TaskScheduler\Manual Maintenance"
На рисунке ниже показано мое задание по очистке временных файлов скриптом.
Несмотря на отсутствие триггеров, задание отработало, успешно удалив ненужные файлы. Обратите внимание, что время выполнения задания до секунды совпадает со временем запуска других задач автоматического обслуживания.
Я пользуюсь планировщиком заданий для:
- запуска командной строки, PowerShelll, JumpReg и некоторых других программ без запроса UAC
- перезапуска одной старой программы при выходе из гибернации (впрочем, в Windows 8 проблемы с ней не наблюдается)
- очистке временных файлов скриптом (именно это задание теперь включено в список обслуживания)
А вы? Расскажите в комментариях, для каких задач вы используете планировщик!.