Как автоматически выполнить сценарий 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"

  1. Откройте созданный планировщик задач

  2. перейдите на вкладку "Действие" и выберите созданное "Действие".

  3. В разделе "Правка" с помощью браузера вы можете выбрать файл powershell.exe в папке system32\WindowsPowerShell\v1.0.

       Example -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    
  4. Затем в параметре "Добавить аргументы" -файл вставьте путь к файлу сценария в вашей системе.

        Example – c:\GetMFAStatus.ps1
    

Этот блог может помочь вам автоматизировать сценарии Powershell с помощью планировщика задач Windows.

Я тоже не мог запускать скрипты, после долгих поисков ничего не помогло. Нет -ExecutionPolicy, нет команд, нет файлов и нет разницы между "" и "'.

Я просто помещаю команду, которую я запускал в PowerShell, на вкладке аргументов: ./scripts.ps1 parameter1 11 parameter2 xxи так далее. Теперь планировщик работает. Программа: Powershell.exeНачинать: C:/location/of/script/

Другие вопросы по тегам