Windows Server 2008 中的新任务计划程序让我感到困惑。我编写了一个应用程序,用于执行一些与数据相关的任务。我每 10 分钟运行一次此应用程序。如果有新数据,则会对其进行处理。此应用程序已在 Win2k3 服务器下运行多年。
我使用“创建基本任务”向导在 Windows Sever 2008 中设置了任务。大多数菜单看起来很熟悉,而且现在似乎有更多的选项。当我到达最后时,我打开对话框来调整设置并将其设置为每 10 分钟运行一次。
应用程序所做的第一件事是创建一个日志文件,因此我等待日志文件出现。它始终没有出现。我通过双击自行启动应用程序,然后它就出现了,因此应用程序运行良好(在我创建任务的管理员帐户下)
接下来,我让一天过去,然后返回检查“历史记录”选项卡。据此显示,该应用程序每 10 分钟运行一次,持续了 24 小时或更长时间,但尚未创建日志文件!
仔细检查可发现,每次发生都与 6 个“事件”相关:事件 ID - 任务类别 - 操作代码
107 - Task triggered on schedule - (1)
319 - Task Engine received message to start - (1)
100 - Task Started - (1)
200 - Action Started - Info
129 - Created Task Process - (2)
201 - Action completed - (2)
102 - Task completed - Info
应用程序会创建一个窗口窗体,用户可以根据需要中断处理。在 Win23k 上,我观察到它会弹出一两秒钟,然后消失,以确认应用程序是在白天触发的。我没有看到对话框。
为了加深神秘感,该应用程序做实际执行任务,即它正在运行。
有人能解释一下这里发生了什么吗?
答案1
在我看来,这听起来像是与创建日志文件有关的安全\权限问题。您的脚本没有中断,这意味着要么您没有捕获该错误,要么它实际上正在创建日志文件,但您用来查找它的帐户没有访问权限,尽管最后一种可能性似乎不太可能。
我认为您的标题不准确 - 您说应用程序确实执行了处理任务,因此调度程序说的是实话,它会在需要时执行您要求它执行的操作。不起作用的是您在 Win2k8 上的调度程序提供的安全上下文中运行的脚本的精确行为。您是否尝试过在特定用户上下文中明确安排它?简单地在以管理员身份登录时安排任务将导致任务在系统上下文中运行,这可能不会按照您的预期执行。W2K3 和 W2K8 之间在这方面发生了变化,因此(至少对我来说)在 W2K3 上运行正常的东西在 W2K8 上会失败并不奇怪。