Недавно столкнулся с тем, что задача, запущенная из планировщика, отрабатывала в несколько раз дольше, чем при запуске вручную. Как выяснилось, у каждого задания планировщика есть собственный приоритет выполнения, согласно которому ему выделяются вычислительные ресурсы (процессорное время и память). По умолчанию этот приоритет достаточно низок, поэтому ресурсоемкие задачи могут работать гораздо медленнее, чем обычно.
Для решения этой проблемы есть несколько способов, о которых и пойдет речь дальше.
Редактирование xml-файла
Изменить приоритет выполнения задания напрямую из оснастки планировщика невозможно, но можно выгрузить задание в xml-файл и отредактировать его. Для выгрузки выбираем задание, кликаем по нему правой клавишей и выбираем пункт «Export».
Затем открываем файл задания, находим раздел Priority и указываем желаемый приоритет. Для запланированных заданий по умолчанию устанавливается значение 7, что означает ниже среднего. Обычно для повышения приоритета достаточно указать значение 5 (выше среднего).
Примечание. Приоритет запланированного задания может принимать значение от 0 до 10, чем ниже значение, тем выше приоритет. Более подробно о приоритетах можно узнать здесь.
После редактирования импортируем обратно получившееся задание. Для этого выбираем в планировщике нужную папку, кликаем по ней правой клавишей мыши и выбираем пункт «Import Task». Если вы хотите импортировать задание с тем же именем, то необходимо предварительно удалить из планировщика исходное задание.
Также можно воспользоваться утилитой командной строки schtasks. Вот так будет выглядеть команда для экспорта:
schtasks /Query /XML /TN ″MyTask″ >C:\Tasks\MyTask.xml
А импортировать задание можно командой:
schtasks /Create /TN ″MyTask″ /XML ″C:\Tasks\MyTask.xml″
Настройка приоритета с помощью PowerShell
Начиная с Windows 8\Server 2012 настроить приоритет задания можно с помощью PowerShell. Посмотреть текущий приоритет можно так:
$task = Get-ScheduledTask -TaskName ″MyTask″
$task.Settings.Priority
А изменить так:
$settings = New-ScheduledTaskSettingSet -Priority 5
Set-ScheduledTask -TaskName ″MyTask″ -Settings $settings
Групповые политики
В доменной среде для распространения запланированных задач очень удобно пользоваться групповыми политиками.
Для таких заданий изменить приоритет можно следующим образом. Сначала в оснастке редактора групповых политик открываем нужный GPO и находим его ID.
Затем переходим в SYSVOL, открываем директорию с групповыми политиками и находим нужную политику по ее ID.
Открываем найденный xml-файл и редактируем приоритет, который, также как и в случае локального задания, находится между тегами Priority.
Для ускорения можно пройтись по компьютерам и обновить политики командой gpupdate /force.
Не New-ScheduledTaskSettingSet, а New-ScheduledTaskSettingsSet — чуть не вспотел