Ansible 2.9 win_command传递变量时如何向Windows输出单个反斜杠
Ansible 2.9 win_command反斜杠转义问题解决方案
核心简便方案:使用argv参数列表传参
这是无需任何转义处理、完全规避转义问题的官方推荐方案,直接将命令和每个参数拆分到列表中,Ansible会自动处理特殊字符的传递逻辑,不需要手动调整反斜杠:
修改后的完整配置如下:
vars: # 单引号包裹变量值,YAML不会转义内部的反斜杠 windowsLogonAccount: 'NT AUTHORITY\SYSTEM' tasks: - name: Install Agent via CMD win_command: argv: - config.cmd - --windowsLogonAccount - "{{ windowsLogonAccount }}" args: chdir: "c:/agent"
补充说明
- 你之前在运行日志中看到的
NT AUTHORITY\\SYSTEM是日志输出时做JSON序列化的转义结果,并不等同于实际传递给Windows系统的字符,如果实际执行时报账号不存在的错误,才是真的转义异常。 - 不推荐用字符串拼接的方式写win_command参数,字符串嵌套会触发YAML、Ansible模板、Windows cmd三层转义逻辑,很容易出现转义冲突。
内容的提问来源于stack exchange,提问作者BenMitchell1979
相关产品推荐
相关产品推荐

