Windows计划任务无法在启动时成功运行

时间:2018-01-10 14:18:50

标签: windows powershell taskscheduler elevated-privileges boxstarter

我使用脚本创建一个Windows计划任务,在提升模式下调用powershell脚本,以便在系统启动时使用boxstarter运行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

  •   
  • EventID 403

         

    [Qualifiers] 0

         

    等级4

         

    任务4

         

    关键字0x80000000000000

  •   
  • TimeCreated

         

    [SystemTime] 2018-01-10T18:21:12.000000000Z

         

    EventRecordID 267

         

    渠道Windows PowerShell

         

    电脑WIN-6HSHKOKP31E

         

    安全性

         
        
    • EventData
    •   
         

    已停止可用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 =

  •   

对于错误消息,我用Google搜索并找到了错误代码here

的说明

一般情况下,该页面表示此问题可能是由以下错误引起的:

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

以上情况属于我的系统。

那么我的计划任务有什么错误?我怎么能让它发挥作用?

2 个答案:

答案 0 :(得分:0)

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

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

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

您不需要Start-Process-Verb runas。事实上,-Verb runas实际上会使事情无法正常工作,因为它会引发UAC提示,在尝试自动化时您并不想要这样做。

答案 1 :(得分:0)

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

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

如果你想要一分钟左右,那么所有需要的服务都应该启动。

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