Как создать задание в Планировщике задач

Запуск панели управления из командной строки: инструкция

Для работы с планировщиком задач в Powershell используется модуль ScheduledTask. Разберем в статье как создать задачу в виде скрипта Powershell и выполнить ее.

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

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

Планировщик задач Windows

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

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

Get-Command -Module ScheduledTasks

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

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

# Папка с логами$log_dir = ‘C:logs’# Полный путь до файла с генерацией имени файла в виде даты$log_file = $log_dir + “AppLog_$(Get-Date -format ‘dd-mm-yyyy’).xml”# Получаем 10 последних логов приложений$logs = Get-WinEvent -MaxEvents 10 -LogName application# Сохраняем результат предыдущей команды в файл в формате XMLExport-CliXml -InputObject $logs -Path $log_file -Force

Скрипт сбора логов и сохранения в XML

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

Пример работы скрипта сбора логов и сохранения в XML

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

Как создать расширенную задачу в Windows

Начните с открытия Планировщика заданий. Быстрый способ открыть планировщик заданий в любой версии Windows — использовать поиск: поиск «планировщик задач» и щелчок или поиск соответствующего результата поиска.

Теперь давайте перейдем к делу: чтобы создать новую задачу, в окне «Планировщик заданий» перейдите на панель «Действия», а с правой стороны щелкните или нажмите «Создать задачу».

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

Powershell v4. Создать задачу удаленного планировщика задач, срок действия которой истекает, и удалить

Я пытаюсь создать задачу, которая по существу перезагружает сервер, но задача помещается туда удаленным сервером, выполняющим проверку, чтобы увидеть, нужна ли перезагрузка. Я застрял, пытаясь добавить срок действия, поэтому он удаляется, но не могу найти, где поставить этот параметр или что это такое. Это связано с конечной границей или чем-то еще и этим параметром -DeleteExpiredTaskAfter, но не знаю, какое значение ввести.

С некоторой помощью Крейга Даффа вот как вы можете создать задачу, которая будет удалена после запуска без флага совместимости и с помощью командлетов PS4.0:

Дело в том, что для триггера должна быть определена EndBoundary, чтобы можно было удалить задачу. Командлет New-ScheduledTaskTrigger не имеет параметра для его определения. Уловка состоит в том, чтобы создать задачу и зарегистрировать ее в два разных этапа, с промежуточным шагом для определения конечной границы триггера. Очевидно, что если ваша задача имеет более одного триггера, вам нужно будет установить конечную границу для каждого.

В этом конкретном примере создается задача, которая будет запускаться c:pathtoyour.exe один раз через MyTask две минуты в будущем с учетными данными DomainUser . Срок действия триггера истекает через час после начала выполнения (чтобы кто-то мог проверить, был ли он запущен из окна запланированных задач, а не просматривал журналы Windows), и задача будет удалена через одну секунду после этого.

4 ответов

Я, наконец, написал сценарий, который соответствует моим потребностям. Этот сценарий будет «сканировать» все серверы, перечисленные в объявлении, поиск в c:WindowsSystem32tasks папка для xml-файлов. Затем он запишет значение XML-узла UserID каждого файла в окончательный CSV-файл.

еще не идеально, но полностью работает, чтобы перечислить все задачи всех серверов, и войти, какая учетная запись пользователя используется для их запуска.

на выходе получаем CSV-файл создается на рабочем столе, как это one:

Эй думал, что поделюсь модифицированной версией скрипта, опубликованного Ob1lan. Изменение помогает найти задачи во вложенных папках и перечисляет состояние задачи, а также сведения, включенные в оригинал.

Примечание: если у вас много серверов, это займет много времени. Если вы хотите запустить его параллельно, вы можете использовать скрипт invoke-parallel (Google it), который является значительно быстрее:

Установка запланированной задачи с помощью сценария PowerShell на удаленных компьютерах

Я пытаюсь создать сценарий PowerShell (новый для PS) для настройки расписания запись задачи, чтобы запустить bat-файл.

Точка входа: считывает имена компьютеров из группы безопасности в AD, а затем экспортирует список компьютеров в файл .csv.

Что обрабатывать? запускает файл .bat, который уже скопирован на удаленные компьютеры C: tmp file.bat

Что спроситьI считает, что я могу установить задание, но если задание уже существует на удаленном компьютере, я не могу обработать ошибку / перехват. Буду признателен, если мне кто-нибудь поможет. Спасибо за ваше время!

3 ответа

Устранение проблем, связанных с запланированными задачами, — это боль в тылу, потому что вы не можете понять, что происходит. Это некоторые вещи, которые вы можете проверить:

Убедитесь, что ваша powershell.exe -File «D:script.ps1» работает в принципе, например, запустив ее из CMD (в вашем случае попробуйте запустить powershell.exe -File «D:script.ps1» ). Если это дает вам какие-либо ошибки, вам необходимо исправить их в первую очередь.

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

Проверьте, действительно ли ваша задача завершена или процесс все еще запущен (через Process Explorer, Get-Process , Task Manager. ).

Проверьте результат последнего запуска для кода выхода команды.

Включите историю запланированных задач (Действие → Включить все истории задач). Это даст вам хотя бы некоторую информацию о том, что делает задача, независимо от того, начинается она вообще, и если/какие ошибки произошли. Для включения истории задач вам необходимы права администратора.

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

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

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

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

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector