Ansible执行ansible.windows.win_powershell模块时遭遇DataLoader属性错误的求助
解决Ansible 2.17 + ansible.windows 3.2.0的AttributeError问题
这个错误的核心原因是ansible.windows集合版本与Ansible 2.17核心版本不兼容。Ansible 2.17对内部的DataLoader类做了API调整,移除了get_text_file_contents方法,但你安装的ansible.windows 3.2.0版本仍然在调用这个已被移除的方法,导致抛出AttributeError。
解决方案步骤:
升级ansible.windows集合到兼容版本
Ansible 2.17需要搭配ansible.windows 4.0.0及以上版本(官方兼容矩阵显示,ansible.windows 4.x系列适配Ansible 2.17+)。执行以下命令升级:ansible-galaxy collection install ansible.windows --upgrade升级完成后,你可以通过以下命令确认版本:
ansible-galaxy collection list ansible.windows确保版本显示为4.x或更高。
清理Ansible临时文件与缓存
有时候旧的模块缓存会导致问题,清理临时文件和缓存可以避免残留的旧代码干扰:rm -rf ~/.ansible/tmp rm -rf ~/.ansible/cache重新执行Playbook
完成上述步骤后,再次运行你的Playbook命令:ansible-playbook AD_config.yml --ask-pass --user xxx -e "force=true" --extra-vars "ServerName=MyServer" -vvvv
额外验证点:
- 确认你的Ansible核心版本确实是2.17.14(从执行日志看是对的)
- 检查升级后的ansible.windows集合是否安装在正确路径(
~/.ansible/collections/ansible_collections/ansible/windows)
这个问题本质是版本适配问题,升级对应集合后就能解决API调用不匹配的问题。
内容的提问来源于stack exchange,提问作者Bloodle
相关产品推荐
相关产品推荐

