在系统启动时,我使用脚本创建一个windows计划任务,在提升模式下调用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我检查了事件日志查看器,并看到了计划作业的以下错误消息:
- EventData Stopped HostApplication=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe PreviousEngineState=Available SequenceNumber=16 HostName=ConsoleHost HostVersion=4.0 HostId=13ece112-b027-4051-9ddf-1a195d3a30f NewEngineState=Stopped -File -verb runas EngineVersion=4.0 RunspaceId=d158a216-18e3-4e86-9ade-b232201c9cdc CommandName= CommandType= ScriptName= CommandPath= CommandLine=
对于错误消息,我搜索并找到了错误代码这里的解释。
通常,该页说,这样的问题可能是由以下错误引起的:
以上不适用于我的系统。
那么,我的计划任务有什么错误呢?我怎么能让它起作用呢?
发布于 2018-01-10 15:07:12
看起来,您的所有服务都没有安装。在启动/登录时运行的事情上,这是一个常见的问题。有一个-RandomDelay参数。我建议你修补一下,如果是你自己的机器,你要用它来测试。我的例子用了1分钟。
$TaskTrigger = New-ScheduledTaskTrigger -AtStartup -Delay (New-TimeSpan -Minutes 1)如果您需要一分钟左右的时间,所需的所有服务都应该在此之前启动。
您想要做的另一件事是让您的代码处于try/catch中,因此错误将被写入日志文件中,因此您可以在PowerShell上下文中看到错误,这可能会提供比您在事件日志中得到的更详细的消息。
发布于 2018-01-10 15:06:22
您可以通过手动创建计划任务,然后尝试运行它来解决此问题。
尝试将TaskActionArgument属性更改为以下字符串:
-NoProfile -ExecutionPolicy Bypass -File C:\users\administrator\updatescript\boxstarter.ps1你不需要Start-Process或-Verb runas。事实上,-Verb runas实际上会阻止工作,因为它会激发UAC提示符,您在尝试自动化时不希望这样做。
https://stackoverflow.com/questions/48189431
复制相似问题