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

Ansible win_copy无法访问UNC路径文件报错,如何解决?

解决Ansible win_copy从UNC路径复制文件失败的问题

排查与修复步骤

1. 修正YAML路径转义问题

YAML中双引号会解析转义字符,你当前的src路径写法会导致实际传递给Windows的路径缺失反斜杠,这是常见的隐性错误。两种修复方式:

  • 使用单引号包裹路径,避免YAML解析转义:
    src: '\\someshare.example.com\somefolder\mysql_hg.exe'
    
  • 或者在双引号内将反斜杠转义为双反斜杠:
    src: "\\\\someshare.example.com\\somefolder\\mysql_hg.exe"
    

2. 验证AD用户对共享的访问权限

先排除权限或网络层面的问题:

  • 在目标VM上,手动执行runas /user:someaduser@example.com "cmd.exe",在弹出的命令行中运行dir \\someshare.example.com\somefolder,确认能看到mysql_hg.exe文件。
  • 如果访问失败,检查AD用户的共享权限、NTFS权限,以及VM与共享服务器之间的网络连通性(比如ping域名、测试SMB端口)。

3. 启用Kerberos委派

如果你的WinRM连接使用Kerberos认证(而非NTLM),必须启用Kerberos委派才能让Ansible在远程主机上用指定AD用户访问网络资源:

  • 取消注释ansible_winrm_kerberos_delegation: true参数:
    vars:
      ansible_winrm_kerberos_delegation: true
      ansible_become: True
      ansible_become_method: runas
      ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
      ansible_become_user: "someaduser@example.com"
      ansible_become_password: "adpass of someaduser"
    
    注:Kerberos委派需要域环境中正确注册WinRM服务的SPN,若未配置需先完成这一步。

4. 临时替换模块测试

如果上述步骤无效,用win_command直接执行系统复制命令,排查是否是win_copy模块的适配问题:

- name: Copy via command line
  ansible.windows.win_command: copy "\\someshare.example.com\somefolder\mysql_hg.exe" "C:\Windows\Temp\mysql_hg.exe"
  vars:
    ansible_winrm_kerberos_delegation: true
    ansible_become: True
    ansible_become_method: runas
    ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
    ansible_become_user: "someaduser@example.com"
    ansible_become_password: "adpass of someaduser"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:10:25