创建一个每分钟运行一次的计划任务,无需用户使用 PowerShell 登录

Tom*_*uer 5 windows powershell scheduled-tasks

我正在尝试使用 PowerShell 创建(和替换)计划的 Windows 任务。我找到了相关 PowerShell 命令的文档,据我所知,我一切正常:

$action = New-ScheduledTaskAction -Execute "node" -Argument "C:/scripts/task.js"
$now = Get-Date
$interval = New-TimeSpan -Seconds 60
$forever = [System.TimeSpan]::MaxValue
$trigger = New-ScheduledTaskTrigger -Once -At $now -RepetitionInterval $interval -RepetitionDuration $forever
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask -TaskName 'TEST' -InputObject $task
Run Code Online (Sandbox Code Playgroud)

但是,运行这个,我得到一个神秘的错误:

Register-ScheduledTask :任务 XML 包含格式不正确或超出范围的值。

错误消息是无用的 - 我该如何调试它?

  • 什么 XML?在什么路径?
  • 哪个值?
  • 什么范围?

这个答案说现在使用,TimeSpan.MaxValue所以我用了 100 年:

$forever = $now.AddYears(100) - $now # [System.TimeSpan]::MaxValue doesn't work
Run Code Online (Sandbox Code Playgroud)

但是,错误仍然相同。

我用谷歌搜索并找到了一个建议来调查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree,但是,我的任务没有出现在那里。

该怎么办?

Sag*_*pre 7

只是不要设置-RepetitionDuration参数。默认情况下,它将无限期地执行此操作。

$action = New-ScheduledTaskAction -Execute "node" -Argument "C:/scripts/task.js"
$now = Get-Date
$interval = New-TimeSpan -Seconds 60
$forever = [System.TimeSpan]::MaxValue
$trigger = New-ScheduledTaskTrigger -Once -At $now -RepetitionInterval $interval 
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask -TaskName 'TEST' -InputObject $task
Run Code Online (Sandbox Code Playgroud)

使用上述脚本创建的任务 任务调度器触发器

至于你的错误,我在尝试执行你的脚本时遇到的完整错误已经足够清楚了。它特别指出“最大”时间跨度不是可接受的值。

Register-ScheduledTask :任务 XML 包含格式不正确或超出范围的值。(8,42):Duration:P99999999DT23H59M59S At line:8 char:1 + Register-ScheduledTask -TaskName 'TEST' -InputObject $task + ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (PS_ScheduledTask:Root/Microsoft/ ...S_ScheduledTask) [Register-ScheduledTask], CimException +fullyQualifiedErrorId : HRESULT 0x80041318,Register-ScheduledTask