Для запуска определенных действий по расписанию или при наступлении определенного события в Windows используется встроенный планировщик заданий ( Task Scheduler
). В этой статье мы рассмотри, как настроить автоматический запуск PowerShell скрипта с помощью планировщика задач Windows. Скрипт должен запускаться в фоновом режиме, не выдавать всплывающих окон и запускаться независимо от текущих настроек политики выполнения скриптов PowerShell.
В этом примере я хочу каждые 10 минут запускать PowerShell скрипт, который проверяет письма в почтовом ящике и, если есть новые письма с определенным отправителем и темой, отправляет содержимое в виде уведомления в Телеграм . Путь к файлу скрипта: "C:PSOutlookEmailtoTG.ps1"
taskschd.msc
. SYSTEM
.
powershell.exe
-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File "C:PSOutlookEmailtoTG.ps1"
powershell.exe -file C:PSOutlookEmailtoTG.ps1 -NoExit
-File
– полный путь к файлу скрипта (PS1) -ExecutionPolicy
— позволяет задать настройки выполнения PowerShell скриптов для текущего сеанса. Когда указано Bypass , текущие настройки политики игнорируются и скрипт будет выполнен в любом случае; -NonInteractive
– не выводить интерактивные запросы к пользователю -WindowStyle Hidden
– не показывать окно консоли PowerShell пользователю (скрипт запускается скрыто). Если задание планировщика настроено на запуск при входе пользователя в систему, при запуске скрипт может появляться и пропадать окно PowerShell. Морганий не будет только со скриптами, которые запускаются в сеансе 0 (вне зависимости от входа пользователя). -NoProfile
— если скрипт может работать без использования профиля пользователя, добавьте эту опцию. Она предотвращает загрузку профиля пользователя, что ускоряет выполнение скрипта;
Можно создать задание планировщика для запуска скрипта PowerShell из командной строки:
$TaskName="CheckMailbox"
$Trigger = New-ScheduledTaskTrigger -AtStartup
$Trigger.Repetition = (New-ScheduledTaskTrigger -once -at "12am" -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Minutes 10)).repetition
$User= "NT AUTHORITYSYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File C:PSOutlookEmailtoTG.ps1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
Некоторые дополнительные моменты, которые нужно учитывать при запуске скриптов PowerShell через планировщик заданий Windows:
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…