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

Ansible将Windows主机PS脚本输出保存到本地报错求助

解决Ansible将Windows主机stdout保存到控制节点时的连接拒绝问题

错误原因

报错里的Connection refused指向localhost的5986端口,本质是你的Playbook默认采用Windows的WinRM连接配置,当执行delegate_to: localhost时,Ansible错误地用WinRM协议去连接控制节点(通常是Linux系统),但控制节点没有运行WinRM服务,导致连接失败。

解决方案

在执行本地任务时,强制指定使用local连接方式,避免Ansible沿用WinRM配置。

修改后的Playbook示例(delegate_to写法)

---
- name: Check Antivirus software
  hosts: all
  become: false
  gather_facts: no

  tasks:
    - name: Get AV details
      win_shell: |
        echo "script printing data on stdout"
      register: result

    - name: Save response to control node
      copy:
        content: '{{ result.stdout }}'
        dest: '{{ response_file }}'
      delegate_to: localhost
      vars:
        ansible_connection: local

另一种写法(local_action)

---
- name: Check Antivirus software
  hosts: all
  become: false
  gather_facts: no

  tasks:
    - name: Get AV details
      win_shell: |
        echo "script printing data on stdout"
      register: result

    - name: Save response to control node
      local_action:
        module: copy
        content: '{{ result.stdout }}'
        dest: '{{ response_file }}'
      vars:
        ansible_connection: local

注意事项

  • 确保response_file变量已正确定义,可通过命令行参数传递:ansible-playbook your_playbook.yml -e "response_file=/path/to/save/output.txt"
  • 如果控制节点本身是Windows系统,无需此配置;但多数场景下控制节点为Linux,必须指定ansible_connection: local

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:55:24