在PowerShell 3中新的预定工作看起来很棒,但令我惊骇的是我无法让他们工作。
Register-ScheduledJob -FilePath V:\scripts\testJob.ps1 -Name Test
$t = New-JobTrigger -At 6PM -Once
Add-JobTrigger -Trigger $t -Name Test
我从未看到任何错误或任何内容,但脚本不会执行。如果我打开任务调度程序,我可以看到该作业,并说它“运行”。但在历史上,有一个“行动已完成”与
Task Scheduler successfully completed task "\Microsoft\Windows\PowerShell\ScheduledJobs\Test" , instance "{a117256e-c3f2-42a7-a290-f21aeb6b2260}" , action "StartPowerShellJob" with return code 1.
我已尝试使用任务计划程序中的计划任务进行预测,但没有得到任何结果。有没有人有任何想法?
脚本看起来像这样:
$path = "C:\temp\jobbit.log"
Get-Date | Out-File -FilePath $path -Append
答案 0 :(得分:2)
使用Task Scheduler本身运行PowerShell脚本时遇到了类似的问题。我最终使用它的方法是直接调用PowerShell并传递我想要作为参数运行的脚本
在您的情况下,如果我正确理解cmdlet语法,那将是:
Register-ScheduledJob -Name Test
-FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-ArgumentList ("-NonInteractive","C:\scripts\testJob.ps1")
我假设计划任务的运行时环境不会自动使用PowerShell运行ps1文件。
答案 1 :(得分:1)
很抱歉重振旧线索,但是那些寻找答案的人......
我在Windows Server 2012 R2上遇到了同样的问题。解决方案既简单又令人气愤。
我所要做的只是放弃' .exe'来自"程序/脚本"。就是这样。它应该是:
powershell
而不是
powershell.exe
这当然没有看到你的其他命令参数。我不知道为什么会这样。