如何在Ansible中读取Windows主机文件并将内容保存至变量
实现方案
你可以通过以下两种成熟方式实现需求:
方案1:使用官方专用模块 ansible.windows.win_slurp(推荐)
这是Ansible官方为Windows节点提供的专门读取文件内容的模块,功能稳定,不需要依赖自定义脚本。模块默认返回base64编码的文件内容,解码后即可得到原始文本:
- name: 读取Windows节点文件内容 ansible.windows.win_slurp: path: C:\somefile.txt register: file_contents_raw - name: 解码得到原始文本内容 set_fact: file_contents: "{{ file_contents_raw.content | b64decode }}"
后续直接使用file_contents变量即可获取完整的文件内容。
方案2:直接调用PowerShell原生Get-Content命令
如果你的环境暂未安装ansible.windows集合,也可以通过win_shell直接调用PowerShell命令实现:
- name: 调用PowerShell Get-Content读取文件 ansible.windows.win_shell: Get-Content -Path C:\somefile.txt -Raw register: file_contents_raw - name: 提取标准输出作为文件内容 set_fact: file_contents: "{{ file_contents_raw.stdout }}"
命令中的-Raw参数会将整个文件内容作为单个字符串返回,移除该参数则会按行返回字符串数组,可根据你的使用场景调整。
内容的提问来源于stack exchange,提问作者Kelvin A. Vasquez
相关产品推荐
相关产品推荐

