我有一个发送电子邮件的PowerShell脚本。我想每1分钟自动执行一次该脚本。我怎么能用任务调度程序呢?
目前我已经创建了一个任务并提供了我的脚本路径。但是该调度程序会打开我的脚本,而不是执行。
答案 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)
打开创建的任务计划程序
切换到“操作”标签,然后选择您创建的“操作”
在“编辑”部分中,使用浏览器可以在system32 \ WindowsPowerShell \ v1.0文件夹中选择powershell.exe。
Example -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
接下来,在“添加参数” -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/