You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows任务计划未响应Service Control Manager事件ID7034触发问题排查

Windows任务计划未触发Service Control Manager事件ID7034的排查请求

我配置了Windows任务计划程序,要求在System事件日志中记录来源为Service Control Manager、事件ID7034的事件时触发任务,但任务始终未触发,任务历史无任何记录。

任务配置XML如下:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2023-12-04T14:47:47.0078594</Date>
    <Author>domain\author</Author>
    <URI>\ReviveDeadService</URI>
  </RegistrationInfo>
  <Triggers>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="System"&gt;&lt;Select Path="System"&gt;*[System[Provider[@Name='Service Control Manager'] and EventID=7034]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
    </EventTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-2969236542-3715907981-188815748-53088</UserId>
      <LogonType>Password</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>powershell.exe</Command>
      <Arguments>-ExecutionPolicy UnRestricted -File "D:\Scripts\ReviveDeadService.ps1" -ServiceName  myservice_4343</Arguments>
    </Exec>
  </Actions>
</Task>

系统中实际生成的事件日志内容:

Log Name:      System
Source:        Service Control Manager
Date:          2/7/2024 11:43:23 AM
Event ID:      7034
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      mycomputer.com
Description:
The Agent Listener on port 4343 service terminated unexpectedly.  It has done this 3 time(s).
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="49152">7034</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2024-02-07T19:43:23.630202700Z" />
    <EventRecordID>182814</EventRecordID>
    <Correlation />
    <Execution ProcessID="664" ThreadID="5796" />
    <Channel>System</Channel>
    <Computer>mycomputer.com</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Agent Listener on port 4343</Data>
    <Data Name="param2">3</Data>
    <Binary>6800760072006100670065006E0074006C0069007300740065006E00650072005F0034003300340033000000</Binary>
  </EventData>
</Event>

关键现象:

  • 脚本D:\Scripts\ReviveDeadService.ps1仅包含简单的服务启动命令
  • 用Write-EventLog模拟事件时,任务可正常触发执行:
Write-EventLog -LogName "System" -Source "Service Control Manager" -EventID 7034 -Message "The Agent Listener on port 4343 service terminated unexpectedly.  It has done this 3 time(s)." -EntryType Error
  • 服务自然崩溃生成的真实事件无法触发任务,任务历史无任何记录

排查指导

1. 修正事件订阅查询的匹配逻辑

真实事件的EventID带有Qualifiers属性(值为49152),当前查询仅匹配纯数字的7034,可能导致匹配失败。修改订阅查询,兼容带Qualifiers的EventID:

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[Provider[@Name='Service Control Manager'] and (EventID=7034 or EventID[@Qualifiers='49152']=7034)]]</Select>
  </Query>
</QueryList>

注:部分Windows版本的事件查询可直接忽略Qualifiers匹配数值,若上述修改无效,可尝试保持原查询语法,但删除任务后重新导入配置。

2. 检查任务计划的安全权限

  • 任务使用的domain\author账号需拥有读取System事件日志和目标服务启动的权限
  • 若目标服务为系统级服务,建议将任务运行身份改为SYSTEM账号(任务计划「安全选项」中设置),避免权限不足导致触发失败
  • 检查账号密码是否过期:当前LogonType=Password,密码过期会直接导致任务无法启动

3. 补全事件元数据匹配条件

真实系统事件与模拟事件的元数据存在差异,可在查询中补充匹配Level、Keywords等属性,缩小匹配范围的同时提升准确性:

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[Provider[@Name='Service Control Manager'] and EventID=7034 and Level=2 and Keywords=0x8080000000000000]]</Select>
  </Query>
</QueryList>

4. 调整任务触发限制设置

  • 当前DisallowStartIfOnBatteries=true和StopIfGoingOnBatteries=true,若服务器使用UPS或为笔记本设备,可能因电池状态检测导致任务不触发,建议改为false
  • StartWhenAvailable=false会导致事件发生时若任务无法立即启动,不会后续重试,建议改为true以提升可靠性

5. 启用任务计划详细日志排查

  • 打开组策略编辑器,导航到计算机配置→管理模板→Windows组件→任务计划程序,启用启用任务计划程序日志和启用任务计划程序详细日志
  • 查看Applications and Services Logs→Microsoft→Windows→TaskScheduler下的日志,可找到任务未触发的具体错误原因

6. 验证脚本与服务名称的匹配性

真实事件中的服务显示名称为Agent Listener on port 4343,而脚本参数传入的是myservice_4343,需确认两者是否为同一服务的不同名称(显示名称/服务名)。手动执行脚本验证:

powershell.exe -ExecutionPolicy UnRestricted -File "D:\Scripts\ReviveDeadService.ps1" -ServiceName  myservice_4343

若脚本执行失败,需修正服务名称参数。


内容的提问来源于stack exchange,提问作者S.D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:09:53