如何在Linux环境的Jenkins中调用远程Windows服务器的批处理文件?
我来给你梳理几个生产环境里常用的靠谱方案,帮你实现Linux上的Jenkins调用远程Windows的批处理文件:
方案一:使用Jenkins Windows Agent(从属节点,最推荐)
这是Jenkins原生支持的方式,稳定性和可维护性最好,适合长期使用。
步骤1:在Windows服务器上配置Jenkins Agent
- 登录你的Linux Jenkins控制台,进入「Manage Jenkins」→「Manage Nodes and Clouds」→「New Node」
- 给节点起个好记的名字(比如
Windows-Batch-Worker),选择「Permanent Agent」后点击「OK」 - 配置节点参数:
- 远程工作目录:填Windows上的一个空文件夹路径(比如
C:\Jenkins\Agent_Workspace) - 标签:输入
windows-batch(方便后续任务指定节点) - 启动方式:选择「Launch agent by connecting it to the master」
- 远程工作目录:填Windows上的一个空文件夹路径(比如
- 保存后,页面会生成启动Agent的指令。在Windows服务器上下载对应的
agent.jar,打开命令提示符,运行类似这样的命令(替换成你自己的Jenkins地址、密钥和工作目录):java -jar agent.jar -jnlpUrl http://你的LinuxJenkinsIP:8080/computer/Windows-Batch-Worker/slave-agent.jnlp -secret 你的密钥字符串 -workDir "C:\Jenkins\Agent_Workspace" - 确保Windows上的Java版本和Jenkins Master兼容,同时防火墙允许Jenkins Master和Agent之间的通信。
步骤2:创建Jenkins任务调用批处理
- 新建「Freestyle project」,在「General」 tab 勾选「Restrict where this project can be run」,输入刚才设置的标签
windows-batch - 构建步骤选择「Execute Windows batch command」,直接输入批处理文件的绝对路径(比如
C:\Scripts\your_script.bat),也可以直接写批处理的命令内容 - 保存任务后运行,Jenkins会自动把任务分发到Windows Agent上执行,执行日志会同步到Jenkins控制台。
- 新建「Freestyle project」,在「General」 tab 勾选「Restrict where this project can be run」,输入刚才设置的标签
方案二:使用SSH插件远程执行(适合已开启Windows SSH服务的场景)
如果你的Windows服务器已经配置了OpenSSH服务,这个方法会更轻量化,不用部署Jenkins Agent。
步骤1:确保Windows的SSH服务正常运行
- 打开Windows的「设置」→「应用」→「可选功能」,添加「OpenSSH服务器」
- 在「服务」里找到「OpenSSH SSH Server」,设置为自动启动并启动服务
- 配置防火墙允许22端口的入站连接,同时确保执行批处理的用户有足够权限。
步骤2:在Jenkins上配置SSH服务器
- 进入「Manage Jenkins」→「Plugins」,搜索并安装「SSH plugin」
- 进入「Manage Jenkins」→「Configure System」,找到「SSH servers」模块,点击「Add」
- 填写Windows服务器的IP、端口(默认22)、用户名、密码(或SSH密钥),点击「Test Connection」确认连通性。
步骤3:创建任务调用批处理
- 新建Jenkins任务,构建步骤选择「Execute shell script on remote host using ssh」
- 选择刚才配置的SSH服务器,在命令框里输入调用批处理的命令:
(因为Windows SSH默认用cmd环境,必须加cmd /c "C:\Scripts\your_script.bat"cmd /c来触发批处理执行)
方案三:使用PsExec(临时测试用,不推荐长期生产)
这是微软Sysinternals的工具,无需在Windows上部署服务,但权限控制和稳定性不如前两个方案,适合临时快速测试。
- 操作步骤
- 下载PsExec工具放到Windows服务器的某个路径(比如
C:\Tools\PsExec.exe) - 在Linux的Jenkins任务中,选择「Execute shell」构建步骤,运行类似命令(需要Linux上安装wine来执行Windows程序):
wine C:\Tools\PsExec.exe \\Windows服务器IP -u 用户名 -p 密码 cmd /c "C:\Scripts\your_script.bat" - 注意:这种方式需要处理权限、wine兼容性等问题,不建议用于长期运行的任务。
- 下载PsExec工具放到Windows服务器的某个路径(比如
额外注意事项
- 权限控制:不管用哪种方案,执行批处理的用户必须有足够的权限(比如读写批处理文件、访问相关系统资源)
- 防火墙配置:确保Jenkins服务器和Windows服务器之间的通信端口开放(比如Agent的随机端口、SSH的22端口)
- 日志排查:Jenkins会记录所有执行输出,如果批处理执行出错,可以直接在任务日志里查看具体报错信息
内容的提问来源于stack exchange,提问作者user1635508
相关产品推荐
相关产品推荐

