列表视图中以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 的相关文章

  • 使用 schtasks.exe 指定计划任务的运行目录

    我有一个由计划任务调用的应用程序 它从 Windows Server 2003 迁移到 Windows Server 2008 在 2003 年 该应用程序在可执行文件所在的目录中运行 2008年Environment CurrentDir
  • 任务计划程序错误消息:80041318,这是什么意思?

    我已经搜索并搜索了 MSDN 以找到值为 80041318 的 HRESULT 错误的定义 但我找不到它 我正在 C Win32 中工作 尝试安排一个在当前用户登录时执行的任务 函数 RegisterTaskDefinition 失败并返回
  • 如何销毁由 resque 工作人员排队的工作?

    我在 Rails 3 项目上使用 Resque 来处理计划每 5 分钟运行一次的作业 我最近做了一些事情 使这些工作岗位的创造如滚雪球般增长 目前该堆栈已达到 1000 多个工作岗位 我修复了导致许多作业排队的问题 现在我遇到的问题是由错误
  • AppEngine 延迟库中的 PermanentTaskFailure

    我正在使用 App Engine 和延迟库 但每隔一段时间我的任务就会失败并出现以下错误 Permanent failure attempting to execute task Traceback most recent call las
  • 批处理文件双击可以正常运行,但无法在 Windows 计划任务中运行

    我的 C 驱动器上有一个 archive pst 文件 我在 Outlook 中使用它来备份我的电子邮件 但我的C 不是每晚都备份的 因此 我想将 pst 文件复制到我的网络驱动器 以便持续备份 出于多种原因 我不希望 Outlook 直接
  • Powershell 输出和 GUI 之间的 Windows 防火墙状态不同

    当我跑步时 获取 NetFirewallProfile 我看到 域配置文件已启用 设置为 True 但是 当我转到 控制面板 gt Windows 防火墙 时 GPO 会关闭域配置文件 此外 在具有高级设置的 Windows 防火墙中 防火
  • 按一天中的时间自动切换 Windows 10 中的暗/亮模式(无需修改或更改主题!)

    如今大多数设备都允许自动切换暗 亮模式 但 Windows 10 似乎没有这样的功能 有办法做到这一点吗 例如使用任务计划程序 似乎有很多关于如何以编程方式更改窗口 主题 的示例 但没有关于亮 暗模式切换的示例 可以在 设置 颜色 中为 W
  • asp.net 网站中的 Quartz.net 设置

    我刚刚将quartz net dll 添加到我的bin 中并启动了我的示例 如何使用基于时间的quartz net 调用C 方法 using System using System Collections Generic using Sys
  • .vbs 文件可以是预定脚本吗?

    我编写了一个 vbs 脚本 目前由用户手动运行 如何在 Windows XP 和 Windows 7 上第一次手动执行此脚本时 在任务计划程序中自行安排该脚本 在每天的固定时间自动运行 EDIT Option Explicit Dim oS
  • 将事件日志组织到文件夹中

    我想要创建多个服务 并且希望它们将每个服务记录在我指定的同一目录 文件夹下的日志条目中 这样当我打开 Windows 事件查看器时 我可以看到它们全部放置在一个文件夹中 例如 service1 将登录到 service1 log servi
  • 具有多个服务器的计划任务 - 单点责任

    我们有一个 Spring JPA Web 应用程序 我们使用两个运行应用程序并使用相同数据库的 tomcat 服务器 您的应用程序要求之一是执行 cron 计划任务 经过简短的研究 我们发现 Spring 框架为 cron 作业提供了一个非
  • 我应该在 Visual Studio 内的 wwwroot 下创建文件上传文件夹吗?

    如果我遵循这个example https tahirnaushad com 2017 08 28 uploaddownload files in asp net core 2 0 文件上传将存储在 wwwroot 文件中 据我了解 该文件应
  • 为 Windows 开发计划任务

    我必须使用 C net 开发一个必须每天运行一次的应用程序 它最多只运行一分钟 因此开发 Windows 服务有点大材小用 计划任务是合适的方法 但是 我对应用程序如何传达其结果有一些疑问 如何向任务调度程序指示任务失败 这是通过程序的退出
  • cron 作业和 PHP (Zend Framework) 入门

    我对 cron 作业这个主题完全陌生 所以我不知道从哪里开始学习它们 何时 为何或如何将它们与我的 Zend Framework 应用程序或一般的 PHP 一起使用 任何人都可以通过示例解释该过程 或者推荐一些好的资源来入门吗 Cron 作
  • 自动安排并执行 PHP 脚本

    我编写了一个 PHP 脚本 它生成一个包含数据库中所有表的 SQL 文件 我想要做的是每天或每 n 天执行这个脚本 我读过有关 cron 作业的内容 但我使用的是 Windows 如何在服务器上自动执行脚本 您需要添加计划任务来调用 URL
  • Windows 任务计划程序报告不正确/不一致的结果代码

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

    我需要授予用户哪些权限才能写入 Windows 事件日志 我有一个 ASP NET 应用程序需要模拟用户 并且模拟的用户必须能够写入事件日志 要创建事件日志源 您需要成为管理员 否则您应该能够在没有提升权限的情况下写入它 也许看一下本文 h
  • 让 WSO2 IOT 服务器作为 Windows 服务运行

    我在Server 2012R2上安装了WSO2 IOT Server 我安装了 YAJSW 包装器并按照 WSO2 说明进行配置 当我启动 runConsole bat 来配置 Windows 服务时 出现以下错误 我设置了 JAVA HO
  • 定时任务应该放在哪一层?

    我正在尝试使用分层架构来实现 DDD 应用程序 我有 基础设施层 实现应用程序的技术特定部分的层 领域层 包含领域模型的层 应用层 包含与领域模型交互的干扰的层 接口层 从外部接收事件的层 经典的 3 层 基础设施 架构非常清晰 但我的应用
  • 有没有办法设置 SQL Server 作业计划每 30 秒运行一次?

    当我尝试创建计划时 我可以选择的最短时间是 1 分钟 有没有办法将其减少到秒 这篇文章在这里SQL Server 作业调度 http www sqlservercentral com articles Administration sqls

随机推荐