Как автоматически выполнить сценарий PowerShell с помощью планировщика задач Windows?
У меня есть один скрипт PowerShell, который отправляет электронные письма. Я хочу выполнить этот скрипт автоматически, каждую минуту. Как я могу это сделать, используя планировщик задач?
В настоящее время я создал задачу и указал путь к моему сценарию. Но этот планировщик открывает мой сценарий вместо выполнения.
6 ответов
Создайте запланированное задание и установите действие:
Программа / скрипт: Powershell.exe
Аргументы: -Файл "C:\Users\MyUser\Documents\ThisisMyFile.ps1"
Вот пример использования PowerShell 3.0 или 4.0 для -RepeatIndefinitely
и вверх:
# Trigger
$middayTrigger = New-JobTrigger -Daily -At "12:40 AM"
$midNightTrigger = New-JobTrigger -Daily -At "12:00 PM"
$atStartupeveryFiveMinutesTrigger = New-JobTrigger -once -At $(get-date) -RepetitionInterval $([timespan]::FromMinutes("1")) -RepeatIndefinitely
# Options
$option1 = New-ScheduledJobOption –StartIfIdle
$scriptPath1 = 'C:\Path and file name 1.PS1'
$scriptPath2 = "C:\Path and file name 2.PS1"
Register-ScheduledJob -Name ResetProdCache -FilePath $scriptPath1 -Trigger $middayTrigger,$midNightTrigger -ScheduledJobOption $option1
Register-ScheduledJob -Name TestProdPing -FilePath $scriptPath2 -Trigger $atStartupeveryFiveMinutesTrigger
Вместо того, чтобы использовать только путь к вашему сценарию в планировщике задач, вы должны запустить PowerShell со своим сценарием в планировщике задач, например
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NonInteractive -File "C:\Path\To\Your\PS1File.ps1"
Увидеть powershell /?
для объяснения этих переключателей.
Если у вас все еще есть проблемы, вы должны прочитать этот вопрос.
После нескольких часов тестирования и исследований в Интернете я наконец-то нашел способ запуска сценария PowerShell с помощью планировщика задач благодаря видео " Планирование сценария PowerShell с помощью планировщика задач Windows", автором которого является Джек Фрух @sharepointjack.
Программа / скрипт -> поставить полный путь через powershell.exe
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
Добавьте аргументы -> Полный путь к сценарию и к сценарию без " ".
Начать с (необязательно) -> Каталог, в котором находится ваш скрипт, без " ".
В моем случае у моего скрипта есть параметры, поэтому я установил:
Аргументы: -Command "& C:\scripts\myscript.ps1 myParam1 myParam2"
Вы можете использовать командлет Unblock-File, чтобы разблокировать выполнение этого конкретного сценария. Это предотвращает внесение каких-либо постоянных изменений политики, которые вы можете не захотеть из-за проблем безопасности.
Unblock-File path_to_your_script
Источник: Unblock-File
Ни одно из опубликованных решений не помогло мне. Обходной путь, который сработал:
создать run.bat
и положить внутрьpowershell.exe -file "C:\...\script.ps1"
затем установите Action в Program/Script: "C:\...\run.bat"
Откройте созданный планировщик задач
перейдите на вкладку "Действие" и выберите созданное "Действие".
В разделе "Правка" с помощью браузера вы можете выбрать файл powershell.exe в папке system32\WindowsPowerShell\v1.0.
Example -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Затем в параметре "Добавить аргументы" -файл вставьте путь к файлу сценария в вашей системе.
Example – c:\GetMFAStatus.ps1
Этот блог может помочь вам автоматизировать сценарии Powershell с помощью планировщика задач Windows.
Я тоже не мог запускать скрипты, после долгих поисков ничего не помогло. Нет -ExecutionPolicy, нет команд, нет файлов и нет разницы между "" и "'.
Я просто помещаю команду, которую я запускал в PowerShell, на вкладке аргументов:
./scripts.ps1 parameter1 11 parameter2 xx
и так далее. Теперь планировщик работает. Программа:
Powershell.exe
Начинать:
C:/location/of/script/