Windows task scheduler delete task

Cancel or Delete Scheduled Tasks in Windows 7

Earlier this week I showed you how to create reminders without Outlook using Task Scheduler in Windows. There will be times when you no longer need a Reminder or other Scheduled Tasks to run. Here’s how to disable or delete them.

Note: Task Scheduler is a feature in XP, Vista, Windows 7 and Windows 8.

Click Start and type: Task Scheduler in the Search box and hit Enter.

Task Scheduler opens up. Expand Active Tasks to see a list of everything that is scheduled to run.

Now scroll through the list and find the task you no longer want to run and double click it. For example, here I’m canceling the Disk Cleanup task I created.

Next, the Task Scheduler Library opens. If you only want to stop it temporarily, right click on the task and select Disable.

The Status will change from Ready to Disabled.

Or, if you want to completely get rid of a task, right click and select Delete. Here I’m deleting a reminder that I set up.

Alternately, you can highlight the task and click the Delete or Disable icon under the Actions panel on the right.

Then verify you want to completely wipe the task. Click Yes.

Make sure to only delete the tasks you’ve created or are sure you don’t want running. A lot of programs add their actions to the Scheduled Tasks Library for checking for updates or performing other vital actions.

A good example is Carbonite backup…you don’t want to disable that from running automatically.

Используем Powershell для работы с планировщиком заданий для создания и изменения задач

18 декабря 2020

В Windows есть механизм под названием ‘Планировщик заданий’ (Task Scheduler). Основная задача планировщика — выполнение задач в определенный момент времени или при определенном действии. В этой статье будет рассмотрены варианты работы с ним через Powershell. На примере мы создадим задание в виде скрипта с Powershell, изменим и удалим его используя только команды.

Навигация по посту

Работа планировщика в Powershell

Отличительной чертой работы Powershell является то, что мы должны создать каждый из объектов (результат команд) планировщика отдельно, а затем объединить их с помощью 1 команды. Сами объекты делятся на следующие:

  1. Action (Действие) — определяет что мы должны запустить. Действия проявляются как программа (например браузер) с аргументами (открыть определенный сайт). В одной задаче может быть до 32 действий;
  2. Trigger (Триггер) — это событие при котором должно запуститься действие. Событие может быть привязано к времени или каким-то процессом в системе (включение компьютера, вход пользователя и т.д.). Время можно устанавливать как определенное, например в 14:00, так и интервальное — каждые 2 часа. Так же как и действий триггеров может быть несколько.
  3. Settings (Настройки) — дополнительные условия обработки задач. Это может быть перезапуск в случае сбоя задачи или самоудаление если задача не используется.
  4. Security Options (Параметры безопасности) — определяют привилегии и пользователя от имени которого будут запущены задания.
Читайте также:  Лучший linux для java

3 и 4 пункт не является обязательными при создании задачи т.к. уже имеет настройки по умолчанию.

За создание задач в планировщике отвечает модуль ScheduledTasks, который имеет следующие команды:

Создание скрипта для тестирования

Что бы продемонстрировать работу планировщика я создам скрипт, который будет сохранять логи с журнала Windows в папку ‘logs’. Ниже находится сам скрипт:

Команды выше не должны выдавать каких либо ошибок. Ошибка может быть, например, с несуществующей папкой ‘logs’. Сам скрипт я сохранил по пути ‘C:\scheduler_task.ps1’. Его запуск не выдает каких-то ошибок:

У вас так же будет создан файл в папке ‘logs’.

Создание выполняемого действия для планировщика

Для создания ‘action’ мы должны указать программу и аргументы. В качестве программы будет сам интерпретатор ‘powershell.exe’, а аргументом будет путь до скрипта. Как говорилось раньше у нас будет несколько объектов (результат команд) и все их нужно будет объединить. Что бы это было возможным мы должны поместить результаты работы в переменные:

Мы так же можем указать параметр ‘WorkingDirectory’, который определяет откуда и будет запущена программа. Учитывая, что ‘powershell.exe’ виден через системные переменные использовать параметр ‘WorkingDirectory’ нам не требуется.

Действия выше аналогичны следующим настройкам в интерфейсе (т.е. так мы обычно добавляем скрипт Powershell в планировщик):

Создание временного события — триггера

Следующим мы определим, когда мы будем запускать задачу. Это делается с помощью команды ‘New-ScheduledTaskTrigger’. Эта команда имеет множество параметров, которые делятся на системные события и временные.

Системные события, которые мы можем использовать, следующие:

  • AtLogOn — во время входа пользователя в систему;
  • AtStartup — во время запуска системы.

Аргументы связанные со временем:

  • At — точное время выполнение скрипта;
  • Daily — ежедневно;
  • DaysInterval — интервал в днях. Если указать цифру 1, то подразумевается, что задача будет запускаться ежедневно. Если указать 2 — то задача будет запускаться через день;
  • DaysOfWeek — день недели, когда будет выполнен запуск. Возможны варианты: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;
  • Once — запуск будет выполнен единожды;
  • Weekly — запуск по неделям;
  • WeeksInterval — интервал между неделями;
  • RandomDelay — указывает задержку между запусками. Задержка определяется случайно от указанного значения. Принимает не число, а объект TimeSpan;
  • RepetitionDuration — Срок действия задачи. Принимает не число, а объект TimeSpan.
  • RepetitionInterval — время через которое задача будет повторяться. Принимает не число, а объект TimeSpan.

Большую часть команд, связанных со временем, мы можем сочетать вместе. Так, например, мы создадим триггер выполнится однажды в 13:00:

Еще несколько примеров:

Меня интересует ежедневный запуск задачи с периодичностью в 5 минут. Для ‘RepetitionInterval’, который устанавливает такие интервалы, нужно использовать дополнительную команду ‘New-TimeSpan’. В этой команде определим сам интервал:

Читайте также:  Windows event logger service

Регистрация задачи в планировщике

Теперь, после выполнения минимальных требований в виде ‘action’ и ‘trigger’, мы должны объединить эти объекты. Это делается с помощью команды ‘Register-ScheduledTask’. Дополнительно мы можем определить название и описание создаваемого объекта:

Учитывайте, что вы можете использовать несколько триггеров и действий. Для этого вы должны перечислить их через запятую.

TaskPath указывает где была создана задача. В примере выше это произошло в корне планировщика:

Вы можете использовать аналогичный параметр для регистрации задачи в другой директории:

Способа узнать путь два:

  1. Через графический интерфейс;
  2. Через команду ‘Get-ScheduledTask’ (будет рассмотрена ниже).

В powershell есть еще одна команда, которая может участвовать в создании задач «New-ScheduledTask». Основное отличие такой команды в том, она не регистрирует (добавляет) задачу в сервис планировщика. Если бы мы использовали обе команды это бы выглядело так:

Запуск и получение дополнительной информации

Для запуска задачи, не зависимо от триггеров, используется команда ‘Start-ScheduledTask’:

У нас так же есть 2 команды, которые возвращают информацию о задачах.

Первая команда просто возвращает список задач, которые есть в каталогах планировщика их статус и путь:

У команды запуска и получения задач из планировщика можно использовать параметры:

  • TaskName — имя объекта;
  • TaskPath — путь до объекта.

Более полезная команда следующая, так как вернет немного больше информации:

Само собой все эти команды можно использовать в конвейере:

Если задача занимает много времени и ее нужно остановить — можно выполнить следующие действия:

Фильтрация через Where-Object в Powershell с примерами

Изменение пользователя, параметров безопасности и уровня запуска

Создавая задачи в планировщике мы имеем блок ‘Security Options’, который чаще используется с настройками по умолчанию. В этом блоке определяются следующие параметры:

  • Пользователь, от имени которого будет выполнен запуск;
  • Выполняется ли задача для вошедших в систему пользователей;
  • Привилегии запуска (от пользователя/администратора);
  • Совместимость.

В графическом интерфейсе эти параметры настраиваются в следующем блоке:

Так же как и в случае с созданием задачи, в случае ее изменения мы создаем разные объекты (результаты команд), которые затем привязываем через команду ‘Set-SchedukedTask’.

С помощью следующих команд мы изменим пользователя, повысим права и изменим совместимость:

Если у вас будет следующая ошибка, то скорее всего она связана с неверным пользователем:

  • Set-ScheduledTask : No mapping between account names and security IDs was done.

Само собой эти же объекты можно использовать при создании (регистрации) задачи в планировщике:

Учитывайте, что у New-ScheduledTaskSettingsSet около 30 возможных параметров (работа при отключенной батареи, максимальное количество перезапусков и т.д.). В примере выше рассмотрено лишь несколько.

Изменение триггеров и действий

С помощью Set-ScheduledTask так же добавляются и изменяются триггеры и действия. Изменение будут заключаться в полной замене существующих триггеров и действий у задач. Вам просто нужно создать объект по аналогии с тем, как это делалось в предыдущих разделах:

Бэкап, удаление и восстановление задач планировщика с Powershell

Удобной возможностью использования Powershell является импорт и экспорт задач планировщика. По сути вы можете создать шаблон, который можно использовать на разных компьютерах без особой работы с кодом. По умолчанию, сам Powershell, не предоставляет прямой возможности бэкапа и восстановления, но это можно сделать через другие команды.

Читайте также:  Сколько раз можно активировать windows одним ключом

Резервное копирование

Для бэкапа мы можем использовать команду Export-CliXml. Для этого нам нужно будет получить задачу и использовать конвейер:

Для экспорта в Powershell так же есть ‘Export-ScheduledTask’, но нет аналогичной команды импорта. Что бы импортировать такие файлы-задачи мы можем использовать только GUI. Из-за этого она не приведена в примере выше.

Удаление, отключение и включение

При удалении задачи, по умолчанию, запрашивается подтверждение. Что бы этого не было добавляется ключ ‘Confirm’:

Если требуется только отключить задачу используйте Disable:

Восстановление

Восстановление выполняется в несколько шагов. Первое — мы должны выполнить импорт XML документа в Powershell:

На одном из сайтов я прочитал, что следующий параметр нужно изменять на «Interactive», так как без него не будет работать задача, но у меня этот параметр не изменялся при экспорте:

Этот параметр связан со входом пользователя через GUI. Аналогичное название в интерфейсе планировщика задач «Выполнять только для пользователей, вошедших в систему». Если этот параметр у вас отличается — вы сможете изменить его так:

Далее нам нужно зарегистрировать эту задачу определяя каждый из параметров отдельно:

Как создавать команды и функции в Powershell вызывать их и передавать параметры

Анализ выполнения и завершения, а так же сравнение

Используя предыдущие команды мы можем выполнить некоторую автоматизацию. Например так мы можем увидеть результат выполненных задач:

Часть этих кодов имеет следующую расшифровку (был использован автоматический переводчик):

  • 0 — операция успешно завершена.
  • 1 — Вызывается неправильная функция или неизвестная функция. 2 Файл не найден.
  • 10 — Неправильная среда.
  • 267008 — Задача готова к запуску в следующее запланированное время.
  • 267009 — В данный момент идет выполнение.
  • 267010 — Задача не будет запущена в запланированное время, потому что она отключена.
  • 267011 — Запуск еще не был выполнен.
  • 267012 — Для этой задачи больше нет запланированных запусков.
  • 267013 — Одно или несколько свойств, необходимых для запуска этой задачи по расписанию, не были установлены.
  • 267014 — Последний запуск задачи был прерван пользователем.
  • 267015 — Либо у задачи нет триггеров, либо существующие триггеры отключены или не установлены.
  • 2147750671 — Учетные данные повреждены.
  • 2147750687 — Экземпляр этой задачи уже запущен.
  • 2147943645 — Служба недоступна (установлен ли флажок «Запускать только при входе пользователя в систему»?).
  • 3221225786 — Приложение было закрыто в результате нажатия CTRL + C.
  • 3228369022 — Неизвестное программное исключение.

Альтернативное — вы можете открыть интерфейс планировщика и посмотреть какая ошибка отображается там (она будет текстом).

Далее вы можете создать скрипт для поиска сбойных задач. Например меня интересует только задачи со сбоями, а не успешно работающие. Так как я не знаю всех кодов, мне нужно будет исключить только коды успешного выполнения:

Такой же подход можно использовать при поиске странных сервисов-программ. Например у нас есть эталонный компьютер/сервер и на нем созданы все нужные задачи. Всех их мы помещаем в один объект, а затем сравниваем с другими экземплярами:

Далее, через разные средства, мы можем сравнить этот список на других компьютерах:

Оцените статью