我创建了计划任务,在每天早上的不同时间在 6 台不同的机器上运行,所有机器都运行 Windows 7 x64。
这些任务在过去几年中基本上发挥了作用,但我们仍然存在一个持续存在的问题,即任务有时不会触发,并且在重新启动后也不会触发。
在根本不接触任务计划程序应用程序的情况下,重新启动计算机将意味着下次触发该任务时,该任务将不起作用。
重新启动后手动运行任何任务似乎可以避免该问题。
计划的批处理文件和 PowerShell 脚本存在此问题。
是否需要进行特定设置才能在系统重新启动后保持任务正常运行,或者这是一个已知的未解决问题?
最近一次发生这种情况时,我们捕获了历史记录:
Error | 27/02/2017 03:15:00 | 101 | Task Start Failed
Information | 27/02/2017 03:15:00 | 107 | Task triggered on Scheduler
Result code for failure: 2147943645
Run Code Online (Sandbox Code Playgroud)
2017-03-01 更新:一台机器不工作并产生上述错误,另一台机器什么也没有显示。在这里抓住这个问题的救命稻草。
如果我勾选“无论用户登录还是注销都运行”框,该任务是不可见的。我们不能这样做。欢迎任何其他建议!
2017-03-02 更新:勾选“无论用户登录还是注销都运行”会导致无穷无尽的问题。我们的 Access 宏不再运行,并且从批处理中调用的其他第 3 方应用程序无法运行,并出现大量权限错误。这不是解决办法!
我在 PowerShell 模块中有一个函数,它创建一个日志文件并使用该文件启动转录(见下文)。运行 PowerShell 脚本时,这非常有效并捕获所有输出。
运行调用批处理文件的 PowerShell 脚本时(我们在从 CMD > PowerShell 迁移时经常这样做),批处理文件输出显示在与 PowerShell 脚本相同的窗口中的控制台上,但转录日志文件仅显示 1 个空白调用批处理文件的行。
09:53:25 AM [Success] Zip file already up to date, no need to download!
09:53:25 AM [Note ] Calling 1.bat
10:07:55 AM [Note ] Calling 2.bat
Run Code Online (Sandbox Code Playgroud)
我从 .ps1 脚本调用批处理文件,仅使用与号“&”。
奇怪的是,有时批处理文件输出会被捕获在日志中(通常是调用的第一个批处理文件)。但是我找不到这些文件的任何特别之处。
同样奇怪的是,有时我们调用外部程序(WinSCP),而这些命令的输出有时只显示在脚本中。可能相关。
作为参考,这里是我用来创建流程记录的函数。
Function Log_Begin()
{
<#
.SYNOPSIS
Starts the process for logging a PowerShell script.
.DESCRIPTION
Starts the process for logging a PowerShell script. This means that whenever
this function is …
Run Code Online (Sandbox Code Playgroud)