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

Rundeck通过WinRM执行Windows删除任务始终返回成功问题求助

问题根本原因

  • Windows 批处理内置的del命令存在特殊行为:当目标文件不存在删除失败时,仅输出错误日志但不会返回非0的退出码,你现有脚本末尾的EXIT默认返回0值,Rundeck依赖命令返回的退出码判断执行结果,收到0就会判定任务执行成功。
  • 而Linux下rm命令删除不存在的文件时会主动返回非0退出码,所以Rundeck可以正确识别失败状态。

修复方案

1. 修改批处理脚本,主动捕获异常返回非0退出码

替换你现有的RundeckDeleteFile.bat内容如下:

:: Rundeck delete file
@ECHO OFF
SET TARGET_FILE=C:\users\winrmuser\Documents\CreateFile_%1.log

:: 判断目标文件是否存在
IF EXIST %TARGET_FILE% (
    DEL %TARGET_FILE%
    :: 二次校验是否删除成功
    IF EXIST %TARGET_FILE% (
        ECHO Delete failed: %TARGET_FILE% cannot be removed
        EXIT /B 1
    )
    ECHO Delete success: %TARGET_FILE% removed
    EXIT /B 0
) ELSE (
    ECHO Delete failed: %TARGET_FILE% does not exist
    EXIT /B 1
)

其中EXIT /B 1会主动向调用方返回非0退出码,Rundeck的WinRM插件收到该值后就会判定任务执行失败。

2. 可选:添加日志过滤规则兜底

如果需要覆盖更多未预判的异常场景,可以在Rundeck任务配置中添加日志失败匹配规则:

  • 编辑对应任务 -> 进入命令配置页 -> 点击「Add Log Filter」
  • 选择类型为「Fail Output Regex」,正则规则填入Could Not Find|Delete failed
  • 保存配置后,只要任务输出日志中匹配到上述关键字,Rundeck会直接判定任务失败,和退出码判断形成双重校验。

内容的提问来源于stack exchange,提问作者SysadminAgi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:45:02