列表视图中以0x8007000为前缀的计划任务返回码,在事件日志中注册为0

2023-12-02

我目前正在尝试在 Zabbix 中设置对 Windows 计划任务的监控。只需监视通过 201 事件过滤的 Microsoft-Windows-TaskScheduler/Operational 事件日志并在返回代码上进行正则化似乎很容易,但是当我开始模拟错误来测试监视时,什么也没有发生。

事实证明,我们所有的 Windows 2012 服务器总是在事件日志中记录“返回代码 0”,即使它实际上在任务计划程序列表视图中正确显示它。当我说“有点”时,是因为如果计划任务运行的程序的退出代码为 1,则“上次运行结果”实际上显示 0x80070001。

我花了很多时间调整设置,例如用户帐户、仅在用户登录时运行、无论用户是否登录都运行、设置操作路径、以最高权限运行、为 Vista/7/2012 配置等等。没有任何帮助。

最后我在我的本地机器 Windows 7 和 2008R2 服务器上做了一些测试,两者都按预期工作。

我正在测试的特定任务运行了一个 PowerShell 脚本,使用 -Command 以便它正确传播退出,但为了排除任何 PS 问题,我还使用包含“exit 1”的批处理文件进行了测试,最后使用了一个小型 C# 控制台程序,它只返回您在命令行上提供的任何内容。 PS、批处理和控制台程序在 7 和 2008 上都工作正常,但在 2012 上都以同样的方式失败。

我已经用谷歌搜索了这个,但还是没找到。显然 0x80070005 和其他类似的错误代码有一定的含义,但这不是我的情况。就我而言,我的退出代码似乎与 0x80070000 进行了按位或运算。

我应该注意到,在所有情况下,即使是2012年,由任务启动的程序实际上执行并运行到最后,只是退出代码处理得很奇怪。

以下是测试运行的输出:

从 Powershell (我的 shell 写:( if $LASTEXITCODE > 0 ):

54 :( .\ExitCodeTest.exe 1
55 :( $LASTEXITCODE
1

56 :) .\ExitCodeTest.exe 10
57 :( $LASTEXITCODE
10

Windows Server 2008 R2 标准版:

Last Run Result (from list view): 0xA
Event 201 from event log Microsoft-Windows-TaskScheduler/Operational:
Task Scheduler successfully completed task "\ErrorTest" , 
instance "{b67a26cf-7fd8-461a-93d9-a5e48e72e558}" , 
action "D:\Tasks\ExitCodeTest.exe" with return code 10.

Windows Server 2012 Datacenter(请注意事件日志中的返回代码为 0):

Last Run Result (from list view): 0x8007000A
Event 201 from event log Microsoft-Windows-TaskScheduler/Operational:
Task Scheduler successfully completed task "\error test" , 
instance "{2bde46b8-2858-4772-a7ec-d66b29d893a6}" , 
action "D:\Tasks\ExitCodeTest.exe" with return code 0.

ExitCodeTest.exe 的来源:

static void Main( string[] args )
{
    int exitCode = 0;
    if ( args.Length > 0 )
    {
        exitCode = Convert.ToInt32( args[0] );
    }
    Environment.Exit( exitCode );
}

请帮忙,我已经无计可施了。

谢谢, 约翰


(这不是答案,但 StackOverflow 拒绝让我添加评论 - 当我单击“添加评论”时,浏览器滚动到页面顶部:-/)

您可能会误解“上次运行结果”列。根据维基百科(http://en.wikipedia.org/wiki/Windows_Task_Scheduler),LRR 值常见为 0、1 和 10。忽略 0x8007 前缀 - 这仅表示 WIN32 错误代码转换为 HRESULT (http://msdn.microsoft.com/en-us/library/gg567305.aspx).

尝试运行测试并强制使用 1 或 10 以外的退出代码,看看这是否会影响 LRR。

这当然不能解释为什么 2012 年的操作返回代码为 0。错误代码 10 被定义为“环境不正确”。难道2012服务器不想运行32位可执行文件吗?

另一个建议(我有点超出了我的深度);根据 (http://msdn.microsoft.com/en-us/library/system.environment.exit(v=vs.110).aspx): “退出要求调用者有调用非托管代码的权限。而 return 语句则不需要。”。可能值得重新编译 ExitCodeTest,如下所示:



static int Main(string[] args)
    {    
        int exitCode = 0;
        if ( args.Length > 0 )
        {
            exitCode = Convert.ToInt32( args[0] );
        }
        return exitCode;
    }
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表视图中以0x8007000为前缀的计划任务返回码,在事件日志中注册为0 的相关文章

  • 在 Windows 事件查看器中诊断 CLR 错误

    我们有一个 NET 桌面应用程序在生产中崩溃了 我们如何诊断错误 我想知道发生的异常类型 错误消息和堆栈跟踪 因为我们的代码没有处理异常 所以我们收到了 此应用程序遇到问题 需要关闭 Windows 消息框 唯一的选择就是关闭 没有调试按钮
  • 通过 Windows Scheduler 运行 python 脚本不起作用

    我正在尝试通过 Windows 任务计划程序自动执行 python 脚本 但它不起作用 在我的 python 脚本的末尾 应该创建两个 CSV 文件 但没有创建 我尝试了以下方法 1 将我的python exe的地址复制到Program S
  • 设置 RestartOnFailure 后无法在 Powershell 中导入计划任务 xml

    我目前正在尝试从 Powershell 设置 Windows 计划任务 设置 RestartOnFailure 属性 查看任务设置对象 https msdn microsoft com en us library windows deskt
  • 如何设置 Quartz.NET 来安排电子邮件

    有两种解决方案Quartz server 2008 sln and 石英 2008 sln在下载的quartz NET 库中 现在我必须设置重复工作 数据库中会有一个表格 其中定义了所有时间表 例如每月的第一个星期五 每月 5 个 每个星期
  • Windows 7 任务计划程序和 Python - 壁纸不变

    我尝试每五分钟运行一次 Python 脚本来更新 Windows 7 桌面背景 从命令行启动时它可以完美运行 但不能作为计划任务运行 相关代码 import ctypes According to MSDN other websites S
  • 仅在一个WebLogic集群节点上运行@Scheduled任务?

    我们正在集群 WebLogic 10 3 4 环境中运行一个 Spring 3 0 x Web 应用程序 war 其中包含夜间 Scheduled 作业 但是 当应用程序部署到每个节点时 使用 AdminServer 的 Web 控制台中的
  • 我如何找到启动我的进程的计划任务的实例ID/相关ID

    如果我有一个运行我的 EXE 的 Windows 计划任务 有没有办法从我的 EXE 内部找到触发我的计划任务实例 简单的回答是 不 你能做的最好的事情是以编程方式访问任务调度程序库 看看你所在的进程是否处于 运行 模式 获取进程的 PID
  • 在 Windows 中设置 cron 作业

    我每天都必须从 SFTP 服务器下载文件 我有一个从服务器检索文件的程序 但我正在考虑设置一个 cron 作业 或任何类似的作业 来自动执行该操作 我们是一家 Windows 商店 需要在 Windows 中设置 cron 作业 windo
  • 更改 Windows 计划任务的电源设置

    我创建了一个 Windows 任务并计划每 1 小时运行一次 任务每小时运行一次 但收到警告Task Scheduler did not launch task Sample Task because computer is running
  • 具有多个服务器的计划任务 - 单点责任

    我们有一个 Spring JPA Web 应用程序 我们使用两个运行应用程序并使用相同数据库的 tomcat 服务器 您的应用程序要求之一是执行 cron 计划任务 经过简短的研究 我们发现 Spring 框架为 cron 作业提供了一个非
  • 如何使用 Clockwork Rails 调度程序 Gem?

    我在 Clockwork 调度程序进程的语法方面遇到问题 实际上 我遇到了与此线程中讨论的类似问题 但从未完全回答 如何使用 Rails Clockwork gem 运行 rake 任务 https stackoverflow com qu
  • NT 事件日志单条消息大小

    谁能告诉我 Windows NT 日志消息的最大大小是多少 我知道可以将事件日志的最大日志大小从 32 MB 重置 我对 NT 事件日志中单个消息可以保存的内存感兴趣 提前致谢 在 Windows Server 2008 中 单个事件日志条
  • 允许远程连接到不同域中的 SQL Server 的防火墙规则

    我最近安装了SQL Server Express 2014在一系列运行 Windows Server 2012 的计算机上 总共七台计算机 除 1 人外 其余所有人都住在同一个地方local domain company local 一台流
  • 如何创建设置为太平洋标准时间午夜的 DateTimeOffset

    我正在使用 Quartz NET http quartznet sourceforge net http quartznet sourceforge net 我试图将开始日期设置在午夜 但我在创建这个日期时遇到问题 该应用程序将位于不同时区
  • Windows 任务计划程序报告不正确/不一致的结果代码

    背景 我正在尝试在计划任务失败时收到电子邮件通知 我的任务可以通过退出代码 错误级别 指示失败 我想使用它并遵循中描述的过滤方法这个答案 https stackoverflow com a 4289360 29805触发电子邮件 Probl
  • java定时器任务调度

    通过阅读 Stack Overflow 我发现很多人不建议使用 Timer Task 嗯 但我已经实现了这个 我有这个代码 detectionHandlerTimer schedule myTimerTask 60 1000 60 1000
  • 使用 Print 进行简单的芹菜测试不会进入终端

    EDIT 1 实际上 print语句输出到 Celery 终端 而不是运行 python 程序的终端 正如 PatrickAllen 所示 OP 我最近开始使用Celery http www celeryproject org 但甚至无法进
  • 以不可见模式运行主bat文件

    我有一个大师 bat文件有 call file1 bat call file2 bat call file3 bat call file4 bat 我想在我的 Windows Server 2008 上安排它以静默 不可见模式运行 我正在寻
  • 尝试使用 C++ 创建一个计划任务运行一次,win7 上的任务计划程序 1.0

    我正在尝试创建一个非常简单的程序 它将在两分钟后运行记事本 这些都经过简化以提出更清晰的问题 我尝试合并一些MSDN 的例子 http msdn microsoft com en us library windows desktop aa3
  • 您可以运行一个从 ASP.Net 项目运行计划任务的“服务”吗?

    我为我们的客户构建了一个 Windows 服务 它从数据库中收集所有已更改 新的行 将它们转换为 CSV 然后每晚通过 FTP 将它们上传到某个地方 现在事实证明 他们无权安装或运行 Windows 服务 这是一个仅 Web 路径托管的解决

随机推荐