我有一个脚本,可以合法地运行超过3天(这是一个命令队列脚本,所以它有很多暂停等待作业完成)。我使用PowerShell Register-ScheduledJob
cmdlet创建作业。
一切正常,除了默认情况下,Windows任务计划程序将停止脚本,如果它没有完成3天后。我可以通过进入GUI并取消选中'* 停止任务,如果它运行的时间超过:3天 *'复选框。我需要能够'取消选中'该框通过Powershell代码。以下是我如何安排它目前:
$immediate = (get-date).AddMinutes(2).ToString("MM/dd/yyyy HH:mm")
$scheduled_date = get-date -Format "yyyyMMMd-HHMMss"
$trigger = New-JobTrigger -Once -At $immediate
$sjo = New-ScheduledJobOption -RunElevated
Register-ScheduledJob -Name "SVC Migrations - $scheduled_date" -ScriptBlock {powershell.exe -File C:\scripts\addvdiskcopy_queue.ps1 } -Trigger $trigger -ScheduledJobOption $sjo >> C:\scripts\temp\job_scheduled.txt
再次,一切工作都很好,直到72小时点击。任何帮助都将不胜感激!谢谢!
5条答案
按热度按时间68de4m5k1#
这将返回一个可以传递给
Register-ScheduledJob
的-Settings
参数的对象。例如:vql8enpb2#
刚刚在Server 2012 R2上解决了这个问题,无需使用外部DLL。与Register-ScheduledTask一起工作,但尚未与Register-ScheduledJob一起测试。
我用类似于上面的方法创建了带有Register-ScheduledTask的,但是没有定义ExecutionTimeLimit设置,这给了我3天的默认值。
然后我返回任务并更改设置如下:
tv6aics13#
看看this thread on CodePlex。
看起来您可以使用任务计划程序管理的库来实现这一点。您需要下载该库并加载DLL。下面是一个完整的工作示例(只需更新DLL的路径)。
我在我的环境中测试了这个库,它按预期工作。最终结果是“* 如果任务运行时间超过 *,则停止任务”复选框被禁用。
l2osamch4#
在任务定义中使用以下设置:
6fe3ivhb5#
旧帖子,但除了@jdc0589在评论中说的,这些选项对我都不起作用。我在运行Windows Server 2016数据中心的Azure虚拟机上运行此脚本。