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

已SSH连接远程Windows,如何用Ansible带参执行bat脚本?

解决Ansible通过SSH连接Windows执行带参数批处理的报错问题

报错原因

你遇到的Missing required argument: _raw_params错误,是因为win_command模块的语法使用错误——该模块不需要通过cmd:键来传递命令,而是直接将命令内容作为模块的原始参数传入。

修正后的Playbook

将win_command的写法改为直接传入命令字符串即可:

---
- hosts: windows_server1
  become: yes
  become_method: runas
  become_user: user1
  tasks:
    - name: Invoke App stop script
      win_command: '"D:\Temp\appstop.bat" "argument 1" -stop'

额外注意事项

  1. 模块选择适配SSH连接:由于你通过OpenSSH连接Windows,win_command、win_shell模块都可以正常使用,两者的语法类似,直接传入命令即可。如果需要在shell环境下执行(比如依赖环境变量),可以改用win_shell:
    win_shell: '"D:\Temp\appstop.bat" "argument 1" -stop'
    
  2. 权限配置检查:你当前连接用户已经是user1@DOMAIN,再配置become_user: user1属于重复提权,若不需要切换到其他用户执行,可去掉become相关配置,减少权限验证环节的问题。
  3. 路径与参数转义:批处理路径和带空格的参数必须用双引号包裹,确保Windows cmd能正确解析,你的写法已经符合要求,无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:57:43