【问题标题】:Powershell scheduled job will not startPowershell 计划作业将无法启动
【发布时间】:2013-03-29 23:03:25
【问题描述】:

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

【问题讨论】:

  • 您是否验证过您的脚本在手动调用时运行?脚本有什么作用?它需要管理员权限才能运行吗?
  • 作业缓冲区历史记录中有任何内容吗?如果作业完全运行,则应该留下一个作业对象。您可以使用 receive-job 来查看输出缓冲区中是否有任何内容。
  • 不要忘记 Import-Module PSScheduledJob 以便将计划的作业提供者挂接到作业基础结构中。否则,Get-Job 不会显示预定的作业。
  • 脚本如下所示:Get-Date | Out-File -FilePath "C:\temp\jobbit.log" -Append;手动运行正常。我尝试将任务设置为提升运行。如果我做作业(在 ipmo psschedulejob 之后),它不会显示任何内容。
  • Powershell 或安全事件日志中是否有任何与作业开始事件一致的内容?

标签: powershell powershell-3.0


【解决方案1】:

在使用任务计划程序本身运行 PowerShell 脚本时,我遇到了类似的问题。我最终让它工作的方式是直接调用 PowerShell 并将我想要运行的脚本作为参数传递

如果我正确理解 cmdlet 语法,您的情况是:

Register-ScheduledJob -Name Test
-FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-ArgumentList ("-NonInteractive","C:\scripts\testJob.ps1")

我假设计划任务的运行时环境根本不会使用 PowerShell 自动运行 ps1 文件。

【讨论】:

  • 很遗憾,语法不正确。 FilePath 参数必须指向 PowerShell 脚本。
【解决方案2】:

很抱歉恢复一个旧线程,但对于那些四处寻找答案的人......

我在 Windows Server 2012 R2 上遇到了同样的问题。解决方案既简单又令人愤怒。

我所要做的就是从“程序/脚本”中删除“.exe”。而已。应该是:

powershell

而不是

powershell.exe

这当然是看不到你的命令参数的其余部分。我不知道为什么会这样。

【讨论】:

  • 有趣的是,这有所作为。我认为我从来没有弄乱命令参数,因为 register-scheduledjob 会自动为您设置所有这些。我确实让这对我有用;如果我没记错的话,它与以登录用户身份运行有关。
猜你喜欢
  • 2021-05-10
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
相关资源
最近更新 更多