如何使用Windows任务计划程序自动执行PowerShell脚本?

时间:2014-05-30 11:50:34

标签: powershell windows-scheduler

我有一个发送电子邮件的PowerShell脚本。我想每1分钟自动执行一次该脚本。我怎么能用任务调度程序呢?

目前我已经创建了一个任务并提供了我的脚本路径。但是该调度程序会打开我的脚本,而不是执行。

9 个答案:

答案 0 :(得分:88)

创建计划任务并将操作设置为:

程序/脚本:Powershell.exe

参数:-File" C:\ Users \ MyUser \ Documents \ ThisisMyFile.ps1"

答案 1 :(得分:14)

以下是使用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

答案 2 :(得分:6)

您应该在任务计划程序中使用脚本启动PowerShell,而不是仅使用任务计划程序中的脚本路径,例如。

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NonInteractive -File "C:\Path\To\Your\PS1File.ps1"

有关这些开关的说明,请参阅powershell /?

如果您仍然遇到问题,请阅读this question

答案 3 :(得分:4)

在我的情况下,我的脚本有参数,所以我设置:

参数-Command "& C:\scripts\myscript.ps1 myParam1 myParam2"

答案 4 :(得分:2)

经过几个小时的互联网测试和研究后,我终于找到了如何使用任务调度程序启动PowerShell脚本,感谢 视频 Scheduling a PowerShell Script using Windows Task Scheduler by Jack Fruh @sharepointjack

程序/脚本 - >通过powershell.exe提供完整路径

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

添加参数 - >脚本的完整路径和脚本,没有任何" "

开始(可选) - >脚本所在的目录,没有任何" "

答案 5 :(得分:1)

您可以使用Unblock-File cmdlet取消阻止此特定脚本的执行。这可以防止您因安全问题而进行任何永久性的政策更改。

Unblock-File path_to_your_script

来源: Unblock-File

答案 6 :(得分:0)

没有发布的解决方案对我有用。 解决方法,该方法有效:

创建一个run.bat并放入其中 powershell.exe -file "C:\...\script.ps1"

然后将操作设置为程序/脚本:"C:\...\run.bat"

答案 7 :(得分:-1)

  1. 打开创建的任务计划程序

  2. 切换到“操作”标签,然后选择您创建的“操作”

  3. 在“编辑”部分中,使用浏览器可以在system32 \ WindowsPowerShell \ v1.0文件夹中选择powershell.exe。

       Example -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    
  4. 接下来,在“添加参数” -File参数中,将脚本文件路径粘贴到系统中。

        Example – c:\GetMFAStatus.ps1
    

此博客可能会帮助您automate your Powershell scripts with windows task scheduler

答案 8 :(得分:-2)

在大量搜索无济于事之后,我也无法启动脚本。否-ExecutionPolicy,没有命令,没有文件,“”和“之间也没有区别。

我只是将在Powershell中运行的命令放在参数选项卡中:./scripts.ps1 parameter1 11 parameter2 xx,依此类推。现在,调度程序可以工作了。 程序:Powershell.exe 开始于:C:/location/of/script/