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

任务计划程序运行脚本时Write-eventlog写入远程事件日志失败

故障现象
  • 手动执行场景:通过PowerShell ISE、常规PowerShell窗口手动运行写事件日志脚本时,可正常在远程域控制器上生成目标日志记录,无异常
  • 任务计划调度场景:无论使用已确认拥有系统日志写入权限的服务账户,还是手动运行可正常生效的个人域账户凭据配置任务,日志写入操作均失败

测试用脚本逻辑极简,核心作用是生成指定事件日志,触发后续事件监控服务发送通知,代码如下:

Write-EventLog -Computername dc1 -LogName System -Source "script_output_events_test1" -EntryType Warning -EventId 45912 -Message "test"
已确认的排查结论

排查阶段已在脚本中添加Out-File命令记录执行状态,确认任务计划程序触发时脚本可正常生成指定输出文件,证明任务调度流程本身可正常拉起脚本执行,仅Write-EventLog命令未成功完成执行。

根因说明

该问题属于PowerShell结合任务计划操作远程资源的典型问题,核心诱因有三点:

  1. 认证令牌权限不足
    当任务计划配置为「不管用户是否登录都要运行」时,Windows默认不会为配置的运行账户生成可用于跨机器认证的网络级令牌,此时访问远程域控的身份实际是运行任务的本地计算机账户,而非你配置的服务账户/个人域账户。域控默认不会给普通域内计算机账户开放系统日志写入权限,因此请求会被拒绝。而手动运行脚本时属于交互式登录,持有完整的可跨域认证的用户令牌,因此可以正常写入。
  2. 事件源注册权限不足
    如果script_output_events_test1这个日志源是之前手动运行脚本时首次注册的,对应注册表项的访问权限仅授予了交互式登录的用户上下文,任务计划运行时的非交互式会话无法访问该事件源的注册表配置,同样会导致写入失败。
  3. 缺少错误捕获导致无明确报错
    原脚本未添加错误捕获逻辑,Write-EventLog执行失败时的错误信息不会被输出,因此只能观察到命令未执行成功,无法直接定位具体报错原因。
可落地的修复步骤
  • 调整任务计划安全配置
    打开对应任务的属性页,在「常规」选项卡优先勾选仅当用户登录时运行,同时勾选「使用最高权限运行」。如果业务要求必须在用户未登录时也能正常运行,需要取消勾选「不存储密码」选项(部分Windows版本显示为「存储账户凭据用于跨网络认证」),同时给运行任务的计算机账户开放目标域控System日志的写入权限。
  • 提前在域控侧注册固定日志源
    直接登录dc1域控制器本地执行以下命令,永久注册目标日志源,避免远程运行时因源注册权限不足报错:
    New-EventLog -LogName System -Source "script_output_events_test1"
    
  • 给脚本添加错误捕获逻辑
    修改原脚本增加错误日志输出,后续再出现执行失败时可以直接从日志文件定位具体原因,参考代码如下:
    try {
        Write-EventLog -Computername dc1 -LogName System -Source "script_output_events_test1" -EntryType Warning -EventId 45912 -Message "test" -ErrorAction Stop
        "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 事件日志写入成功" | Out-File -FilePath C:\Scripts\event_run.log -Append
    }
    catch {
        "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 事件日志写入失败,错误信息:$_" | Out-File -FilePath C:\Scripts\event_run.log -Append
    }
    
  • 规范任务计划的PowerShell启动参数
    编辑任务计划的操作项,显式指定PowerShell启动参数,避免非交互式上下文下的执行策略拦截,参考配置:
    • 程序/脚本:powershell.exe
    • 添加参数:-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\你的脚本文件名.ps1"
      注意脚本路径要写绝对路径,不要用相对路径。

内容的提问来源于stack exchange,提问作者Mitchell Egan Rodkey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:03:04