PowerShell计划任务未运行,报错0x800710E0与事件ID153
计划任务未启动问题排查与解决
问题场景
通过PowerShell脚本创建计划任务,要求创建后次日执行,若设备关机则开机后次日执行,但虚拟机上任务从未启动,触发错误代码0x800710E0与事件ID153,提示:
任务计划程序未启动任务"\xxx",因其错过计划时间。若计划错过,请考虑配置任务在可用时启动的选项。
物理计算机上执行正常,仅虚拟机出现此问题。
原创建脚本
$DateTS = (Get-Date).adddays(1).ToString('yyyy-MM-ddTHH:mm:ss') Invoke-Command -Credential $CREDS -ComputerName $PC.DNSHostName -UseSSL -ScriptBlock { param($DateTS, $ADMIN, $PC) $Actions = (New-ScheduledTaskAction -Execute "net" -Argument "user $ADMIN /delete") $Trigger1 = New-ScheduledTaskTrigger -daily -At $DateTS $Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest $Task = New-ScheduledTask -Action $Actions -Principal $Principal -Trigger $Trigger1 Register-ScheduledTask -TaskName "Disable" -TaskPath \Microsoft\Windows\BitLocker -InputObject $Task } -ArgumentList ($DateTS, $ADMIN, $PC)
问题原因
错误0x800710E0的本质是任务计划程序的默认行为:当任务的触发时间被错过(比如虚拟机关机、休眠导致时间窗口过去),默认不会自动补执行。物理机因持续在线未错过首次触发时间,所以能正常执行;虚拟机则因离线状态错过触发点,触发默认的不启动逻辑。
解决方法
修改脚本,添加任务设置项,配置错过触发时间后立即启动的策略,具体调整如下:
修改后的脚本
$DateTS = (Get-Date).adddays(1).ToString('yyyy-MM-ddTHH:mm:ss') Invoke-Command -Credential $CREDS -ComputerName $PC.DNSHostName -UseSSL -ScriptBlock { param($DateTS, $ADMIN, $PC) $Actions = (New-ScheduledTaskAction -Execute "net" -Argument "user $ADMIN /delete") $Trigger1 = New-ScheduledTaskTrigger -daily -At $DateTS $Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest # 添加错过启动时的补执行配置 $Settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -AllowStartIfOnBatteries $Task = New-ScheduledTask -Action $Actions -Principal $Principal -Trigger $Trigger1 -Settings $Settings Register-ScheduledTask -TaskName "Disable" -TaskPath \Microsoft\Windows\BitLocker -InputObject $Task } -ArgumentList ($DateTS, $ADMIN, $PC)
关键配置说明
-StartWhenAvailable:强制任务在设备恢复在线/可用状态时,立即执行错过的触发任务-AllowStartIfOnBatteries(可选):若虚拟机使用电池供电(部分场景),允许任务启动,可根据实际需求调整
内容的提问来源于stack exchange,提问作者Alex Lum
相关产品推荐
相关产品推荐

