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><QueryList><Query Id="0" Path="System"><Select Path="System">*[System[Provider[@Name='Service Control Manager'] and EventID=7034]]</Select></Query></QueryList></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.
相关产品推荐
相关产品推荐

