1

我使用脚本创建 Windows 计划任务,在系统启动时使用 boxstarter 以提升模式调用 powershell 脚本来运行 Windows 更新(即使在执行期间重新启动,该工具也可以自动继续运行代码)。但不知道为什么,启动后可以调用该任务,但什么也没做。如果我在任务管理器中手动启动计划任务,它将按预期运行。

注册计划任务的脚本:

$TaskActionArgument ="-noprofile -command "&{start-process powershell -argumentList '-File C:\users\administrator\updatescript\boxstarter.ps1 -verb runas'}""
$TaskAction = New-ScheduledTaskAction -Execute "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe" -argument $TaskActionArgument
$TaskTrigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName boxstarter -Action $TaskAction -Trigger $TaskTrigger -User administrator -Password Vmc12svt -RunLevel Highest

我检查了事件日志查看器,并看到计划作业的以下错误消息:

  • 系统

  • 提供者

    [名称] PowerShell

  • 事件 ID 403

    [预选赛] 0

    4级

    任务 4

    关键字 0x80000000000000

  • 创建时间

    [系统时间] 2018-01-10T18:21:12.000000000Z

    事件记录 ID 267

    通道 Windows PowerShell

    电脑WIN-6HSHKOKP31E

    安全

    • 事件数据

    已停止可用 NewEngineState=已停止 PreviousEngineState=可用 SequenceNumber=16 HostName=ConsoleHost HostVersion=4.0 HostId=13ece112-b027-4051-9ddf-1a195d3aa30f HostApplication=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File C: \users\administrator\updatescript\boxstarter.ps1 -verb runas EngineVersion=4.0 RunspaceId=d158a216-18e3-4e86-9ade-b232201c9cdc PipelineId= CommandName= CommandType= ScriptName= CommandPath= CommandLine=

对于错误消息,我用谷歌搜索并找到了错误代码的解释here

通常,该页面表示此类问题可能是由以下错误引起的:

  • 任务计划程序服务已禁用
  • COM 服务被禁用
  • Windows 事件日志服务已禁用
  • RPC 服务被禁用
  • 没有足够的可用内存

以上不适用于我的系统。

那么我的计划任务有什么错误?我怎样才能让它工作?

4

2 回答 2

1

看起来您的所有服务都没有设置。这是在启动/登录时运行的东西的常见问题。New-ScheduledTaskTrigger 有一个 -RandomDelay 参数。如果您正在使用它自己的机器进行测试,我建议您修改它。我的示例使用 1 分钟。

$TaskTrigger = New-ScheduledTaskTrigger -AtStartup -Delay (New-TimeSpan -Minutes 1)

如果您需要一分钟左右,那么到那时应该启动所有需要的服务。

您要做的另一件事是将您的代码放在 try/catch 中,因此错误将被写入日志文件,因此您可以在 PowerShell 的上下文中看到错误,这可能会提供更详细的消息比你在事件日志中得到的。

于 2018-01-10T15:07:12.123 回答
0

您可以通过手动创建计划任务然后尝试运行它来解决此问题。

尝试将TaskActionArgument属性更改为仅以下字符串:

-NoProfile -ExecutionPolicy Bypass -File C:\users\administrator\updatescript\boxstarter.ps1

你不需要Start-Process-Verb runas。事实上,-Verb runas实际上会让事情无法正常工作,因为它会引发 UAC 提示,而您在尝试自动化时不希望出现这种提示。

于 2018-01-10T15:06:22.307 回答