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

通过Ansible调用PowerShell映射网络驱动器时密码验证失败求助

问题:Ansible调用PowerShell脚本映射网络驱动器时提示密码不正确

直接运行deploy.ps1可正常映射网络驱动器,但通过Ansible playbook调用时出现网络密码错误,核心原因是Ansible通过WinRM执行脚本的非交互式会话上下文,与本地交互式会话存在差异,导致凭证传递或网络访问逻辑失效。

可能的原因

  1. 用户身份格式不完整:脚本中仅使用短用户名(如username),本地运行时依赖当前会话的默认域/机器上下文,但Ansible的WinRM会话可能无此默认值,导致身份识别错误。
  2. New-PSDrive的会话隔离:New-PSDrive创建的驱动器仅在当前PowerShell会话内有效,WinRM的非交互式会话对网络资源的访问限制更严格,凭证无法正确传递到共享访问环节。
  3. WinRM配置限制:部分WinRM默认配置可能阻止跨会话的网络凭证传递,导致共享访问时凭证失效。

解决方案

方案1:改用Ansible原生win_mapped_drive模块(推荐)

Ansible的Windows专用模块已处理了WinRM会话的上下文问题,无需手动编写PowerShell脚本:

- name: Deploy Report
  hosts: myhost
  tasks:
    - name: Map network drive
      win_mapped_drive:
        letter: T  # 注意:驱动器字母需为单个字符,模块不支持自定义长名称
        path: "\\\\computer\\path\\to\\blah"  # YAML中反斜杠需转义为双反斜杠
        state: present
        username: "DOMAIN\\username"  # 域用户需加域名前缀,本地用户加机器名前缀
        password: "your_password"

方案2:修改PowerShell脚本,使用net use替代New-PSDrive

net use命令在非交互式会话中的兼容性更强,可绕过PowerShell会话隔离问题:

$mapPath = "\\computer\path\to\blah"
$username = "DOMAIN\username"  # 确保使用完整用户格式
$password = "password"

# 使用net use映射驱动器,/persistent:no避免持久化到系统
net use T: $mapPath $password /user:$username /persistent:no

方案3:完善用户身份格式并调整WinRM配置(进阶)

  1. 在脚本中使用完整用户标识:域用户写DOMAIN\username,本地用户写COMPUTERNAME\username,避免依赖会话默认值。
  2. 若必须使用New-PSDrive,需开启WinRM的CredSSP认证以允许凭证传递:
    • 在目标机器执行:
      Enable-WSManCredSSP -Role Server -Force
      
    • 在Ansible playbook中配置CredSSP:
      - name: Deploy Report
        hosts: myhost
        vars:
          ansible_winrm_transport: credssp
          ansible_winrm_server_cert_validation: ignore  # 测试环境临时使用,生产环境建议验证证书
        tasks:
          - name: Run Deployment Script
            script: "../deploy.ps1"
            register: out
      

排查步骤

  • 直接在目标机器上以Ansible使用的WinRM运行用户身份手动执行脚本,验证是否能正常映射,排除用户权限问题。
  • 检查脚本中密码是否包含特殊字符(如$、\),若有需在PowerShell中正确转义(如$password = "pass$word")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:27:33