Перейти к основному содержанию
 

Запуск PowerShell скрипта в Планировщике заданий

code

Системному администратору часто приходится писать разные скрипты и настраивать их запуск по расписанию в Планировщике заданий (Task Scheduler). Простой пример ниже.

Написал небольшой скрипт и сохранил по адресу:

B:\scripts\web\url_status.ps1

Я хочу, чтобы этот скрипт запускался каждые 10 минут. Время работы скрипта — не более 60 секунд.

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

powershell

Нажимаю Create Task.

powershell

В первой вкладке General указываю:

  • Name. Любое название расписания.
  • Description. Любое описание, не обязательно.
  • С помощью кнопки Change User or Group можно выбрать пользователя, от имени которого будет выполняться скрипт. Я выбираю локального администратора.
  • Run whether user is logged on or not. Устанавливаю радиокнопку, чтобы скрипт выполнялся независимо от того, залогинен пользователь или нет. В этом случае нас попросят после сохранения расписания указать пароль пользователя.
  • Run with highest privileges. Устанавливаю галку для запуска скрипта с правами администратора.

powershell

Перехож на вкладку Triggers. Здесь нужно создать триггер для расписания. New.

powershell

В настройках триггера:

  • Begin the task. Выбираю On a schedule. Запуск по расписанию.
  • Daily. Запускать каждый день.
  • Recur every 1 days. Каждый день без пропусков.
  • Repeat task every 10 minutes. Запускать каждые 10 минут for a duration 1 day. Весь день.
  • Stop tasks if it runs longer than 5 minutes. Останавливать задачу, если она выполняется более 5 минут.
  • Enabled. Включить расписание.

OK.

powershell

Расписание создано.

powershell

Перехожу на вкладку Actions. Здесь нужно указать скрипт для выполнения. New.

powershell

  • Actions: Start a program. Выполнить программу.
  • Program/script. Указываю powershell.exe
  • Add arguments (optional). Здесь нужно указать параметры для запуска скрипта. Я пишу: -file "B:\scripts\web\url_status.ps1". Если нужно передать в скрипт аргументы, то можно написать -command "& {B:\scripts\web\url_status.ps1 -a 1 -b 3}".

OK.

powershell

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

powershell

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

  • Wake the computer to run this task. Разбудить компьютер для выполнения скрипта.

powershell

Перехожу на вкладку Settings. Здесь есть ряд полезных настроек. Ставлю галки:

  • Allow task to be run on demand. Разрешить запуск скрипта по запросу.
  • If the running task does not end when requested, force it to stop. Если задача не завершилась к моменту повторного запуска, то остановить её.
  • Do not start a new instance. Не запускать второй экземпляр.

OK.

powershell

Указываю пароль локального администратора. OK.

powershell

Теперь скрипт будет запускаться по расписанию. В разделе History можно отслеживать результат выполнения.

Теги