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

