Запуск сценариев PowerShell по расписанию с помощью планировщика задач
В Windows встроенный планировщик задач можно использовать для выполнения действия по расписанию или при наступлении определенного события. В этом руководстве объясняется, как настроить автоматический запуск сценария PowerShell с помощью планировщика задач Windows. Сценарий PS1 должен работать в фоновом режиме, не отображать всплывающих окон и запускаться независимо от текущих настроек политики выполнения сценариев PowerShell.
В этом примере я хочу запустить
C:\PS\Outlook_Email_to.ps1Файл сценария PowerShell каждые 10 минут.
Откройте консоль Планировщика задач, запустив
taskschd.mscкоманда
-
Разверните дерево библиотеки планировщика задач. Для удобства создайте отдельную папку для своих запланированных задач. Щелкните правой кнопкой мыши и выберите Создать задачу.
На вкладке Общие укажите имя задачи и пользователя, под которым она будет выполняться. Задача может запускаться автоматически:
- при входе конкретного пользователя (Run only the task is logged in)
- или вошел ли пользователь в систему или нет (Run whether user is logged on or not).
Второй режим используется чаще всего. Во втором случае вы можете указать, что задача должна запускаться от имени конкретного пользователя (Диспетчер учетных данных, используемый для хранения пароля пользователя). Если задача требует повышения прав, включите параметр «Выполнять с наивысшими привилегиями».
На вкладке Триггеры укажите условие или время запуска задачи планировщика. Например, чтобы запускать задачу при входе пользователя в систему, выберите триггер «При входе в систему» и выберите частоту 10 минут в поле «Повторить задачу». каждый вариант.
Если задача запускается от имени СИСТЕМЫ или пользователя с сохраненным паролем, выберите запуск задачи при запуске Windows (При запуске) и периодический ее перезапуск.
Или используйте триггер По расписанию, чтобы установить точное время запуска задачи. Для одной задачи можно настроить несколько триггеров запуска.
Планировщик также может запускать задачу при возникновении определенного события в средстве просмотра событий (см. «Как запустить запланированную задачу после завершения другой задачи»).
Затем перейдите на вкладку Действия. Укажите действие, которое необходимо предпринять при возникновении любого из инициируемых событий. В этом случае я хочу запустить сценарий PowerShell. Выберите Новый -> Запустить программу. Настройте следующие параметры действий:
Программа/скрипт:powershell.exeДобавьте аргументы (необязательно):
-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File "C:\PS\Outlook_Email_to.ps1"powershell.exe -file C:\PS\ Outlook_Email_to.ps1 -NoExit-
Для запуска сценария PowerShell используются следующие параметры:
-File— полный путь к файлу сценария (PS1)
-ExecutionPolicy— Установите параметры политики выполнения сценариев PowerShell для текущего сеанса. Текущие настройки политики игнорируются, и сценарий выполняется в любом случае, если указан Обход;
-NonInteractive- Не отображать интерактивные подсказки пользователю
-WindowStyle Hidden- Скрыть окно консоли PowerShell от пользователя (скрипт запускается скрыто). Окно подсказки PowerShell может появляться и на мгновение исчезать во время выполнения сценария, если задача планировщика настроена на запуск при входе пользователя в систему. Мигающее приглашение отсутствует только для сценариев, запущенных в сеансе консоли 0 (независимо от входа пользователя в систему).
-NoProfile— добавьте эту опцию, если скрипт может работать без профиля пользователя. Он предотвращает загрузку профиля пользователя, что ускоряет выполнение скрипта;
На вкладке Настройки вы можете включить следующие полезные параметры:
Разрешить запуск задачи по требованию
Если запущенная задача не завершить по запросу, принудительно остановить
Не запускать новый экземплярСохраните настройки задачи. Убедитесь, что новая задача отображается в оснастке Планировщик заданий. Нажмите на задачу и выберите Выполнить, чтобы проверить ее.
Если сценарий PowerShell был запущен успешно, в результатах последнего запуска отобразится сообщение:
The operation completed sucessfully (0x0).Чтобы регистрировать все действия в текстовом файле журнала, мы рекомендуем добавить в сценарий PowerShell простую функцию регистрации. Это позволяет в любой момент просмотреть подробную информацию обо всех выполняемых действиях.
Используйте вкладку История, чтобы просмотреть историю и результаты предыдущих запусков задач. По умолчанию история задач не сохраняется в планировщике задач (нажмите ссылку Включить историю всех задач на панели «Действия»).
Вы также можете создать такую задачу планировщика для запуска сценария PowerShell из командной строки:
$TaskName="CheckOutlookMailbox"
$Trigger = New-ScheduledTaskTrigger -AtStartup
$Trigger.Repetition = (New-ScheduledTaskTrigger -once -at "12am" -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Minutes 10)).repetition
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File C:\PS\Outlook_Email_to.ps1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -ForceПри запуске сценариев PowerShell через планировщик задач Windows следует учитывать некоторые дополнительные моменты:
Чтобы запустить сценарий в среде PowerShell Core, запустите
pwsh.exeвместо
powershell.exeЕсли у других пользователей есть доступ к компьютеру, на котором вы запускаете сценарий PowerShell, с привилегированными правами, убедитесь, что вы изменили права доступа NTFS к файлу PS1, чтобы они не могли его изменить.
Если задача запускается от имени непривилегированного пользователя, его учетную запись необходимо добавить в локальную политику безопасности. Войдите в систему как пакетное задание (gpedit.msc -> Конфигурация компьютера -> Настройки Windows -> Настройки безопасности -> Локальные политики -> Назначение прав пользователя). Когда появится предупреждение создаю такую задачу:
This task requires that the user account specified has Log on as batch job rightsВ домене AD вы можете использовать объект групповой политики для запуска сценариев PowerShell, когда пользователь входит в систему или выходит из нее, а также когда компьютер запускается или выключается. Такие сценарии известны как сценарии входа в систему.








