Mar*_*oDS 13 troubleshooting scheduled-task batch windows-server-2008-r2
我有一个批处理脚本,它准备一些文件,执行一个程序 ( .exe
),然后删除所述文件。
此任务应每小时运行一次,因此我尝试使用计划任务进行配置。问题是前面提到的程序在从任务中调用时无法正常运行(无论是通过.bat
脚本还是.exe
直接调用),但我在日志中没有收到任何警告或错误消息。
该任务被配置为作为具有正确设置的所有权限的 Windows 服务帐户运行。使用此帐户通过 RDP 登录时,我可以直接执行.bat
和.exe
没有问题,但该任务似乎仍然没有执行任何操作。这很容易观察到,因为程序总是修改文件,并且修改的时间戳不会通过任务改变。
在计划任务日志中,我得到了任务启动进程、退出等的信息消息。然而,“结果代码”是111
(尝试谷歌这个没有运气,我得到的唯一关联是“文件名太长",这与 AFAIK 完全无关)。在应用程序日志中,我一无所获。
该程序是一个古老的怪物,它产生某种启动画面(它实际上是一个普通窗口),即使不需要 GUI,因为它不需要交互并在操作后自行关闭。窗口出现约 2 秒钟。
我怀疑 GUI 的这一要求与任务失败有关,但我不确定。当我使用运行任务的用户(通过 RDP)登录时,启动计划任务时没有窗口出现。
我构建了一个非常小的 C# 可执行文件,它在没有主窗口的情况下启动程序(使用ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden
)。即使这样,计划任务仍然没有成功正确启动程序,但返回码现在是0
。
当我将任务配置为“无论用户是否登录都运行”并且未选中该run with highest privileges
选项时,错误值为.2147943859
我能做些什么来排除故障?
操作系统 = Windows Server 2008 R2 SP1
如果需要更多信息,请在评论中告诉我。
我相信您的问题与用于运行任务的帐户的权限或尝试运行任务时存在的帐户上下文有关。
您的.EXE可能必须Console
在计算机上的会话(又名会话 0)中运行。对此进行测试:
QWINSTA
,观察SESSIONNAME
列,并确认>
指示器在 旁边console
,换句话说,它应该显示为>console
)如果任务运行正常,请尝试SCHTASKS.EXE
使用/IT
参数调度任务。否则,您可能别无选择,只能将计算机配置为以您的服务用户帐户自动登录并将任务作为启动程序运行。
此外,正如我已经建议的那样,请检查以下内容以确认用于运行任务的帐户已获得正确许可:
Computer Configuration/Windows Settings/Security Settings/Local Policies/User Rights Assignments
)Effective Permissions
文件/文件夹属性中的选项卡来确认Security > Advanced
添加一些日志记录到您的批处理文件。在它执行的每一行之后,让它将一些输出写入日志文件,这样你就知道它在哪里卡住了。例如:
@echo off
echo Line 1 >> "C:\MyLog.txt"
"C:\My Folder\myOldProgram.exe"
echo Line 2 >> "C:\MyLog.txt"
DEL somefile.dat
echo Line 3 >> "C:\MyLog.txt"
Run Code Online (Sandbox Code Playgroud)尝试运行你的.EXE用START
,例如START "myTitle" "C:\full\path\to\my.EXE"
运行我们客户服务器的公司的人员表示,GUI 程序不会以任何方式通过计划任务运行。
他们使用还具有任务调度功能的监控系统。他们已经通过这个设置了它并且看起来有效。
抱歉,我没有机会在这里评估更多建议,但还是感谢您尝试提供帮助。我希望它将来可以帮助其他人,我认为它肯定会的。
归档时间: |
|
查看次数: |
65976 次 |
最近记录: |