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

使用Ansible的vmware_vm_shell模块执行Windows退域加工作组命令失败求助

问题原因分析
  • PowerShell命令行语法错误:直接拼接多行命令时未正确使用-Command参数,嵌套引号导致命令被截断(从错误日志可见,命令仅执行到创建Credential的步骤,说明前序命令解析失败)。
  • 进程等待逻辑冲突:Remove-Computer -Restart会立即重启虚拟机,但wait_for_process: true会强制等待命令进程正常退出,这必然导致超时或执行失败。
  • 变量引用嵌套问题:vm_shell_args中混合使用双引号与单引号,导致Ansible变量解析异常,PowerShell无法正确获取密码值。
解决方案

1. 修正PowerShell命令格式

用PowerShell的-Command参数包裹完整脚本,同时处理引号转义,确保Ansible变量能正确传递到PowerShell环境。

2. 调整进程等待策略

将wait_for_process设为false,因为重启操作会直接终止当前进程,无法等待正常退出;后续可通过专门模块等待虚拟机重启完成。

3. 规避执行策略限制

添加-ExecutionPolicy Bypass参数,避免PowerShell默认执行策略阻止脚本运行。

修正后的Ansible任务

- name: Unjoin domain and join WORKGROUP for {{ vm_cloned_name }}
  community.vmware.vmware_vm_shell:
    datacenter: "{{ datacenter_name }}"
    folder: "/{{ datacenter_name }}/vm/"
    vm_id: "{{ vm_cloned_name }}"
    vm_username: "{{ localusername }}"
    vm_password: "{{ password }}"
    vm_shell: 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
    vm_shell_args: >-
      -ExecutionPolicy Bypass -Command "$Pass = '{{ ansible_password }}' | ConvertTo-SecureString -AsPlainText -Force; $cred = New-Object System.Management.Automation.PSCredential('{{ ansible_user }}', $Pass); Remove-Computer -UnJoinDomainCredential $cred -WorkgroupName 'LOCAL' -Force -Restart"
    vm_shell_cwd: 'C:\Users\administrator\Desktop'
    wait_for_process: false
    timeout: 60
  register: workgroup_res
  tags: join-workgroup

额外验证步骤(可选)

若需要确认操作结果,可在后续添加任务等待虚拟机重启,并验证WORKGROUP成员身份:

- name: Wait for VM to restart and power on
  community.vmware.vmware_guest_wait_for:
    datacenter: "{{ datacenter_name }}"
    name: "{{ vm_cloned_name }}"
    state: poweredon
    timeout: 300
  tags: join-workgroup

- name: Verify WORKGROUP membership
  ansible.windows.win_command: net config workstation
  register: workstation_config
  delegate_to: "{{ vm_cloned_name }}"
  tags: join-workgroup

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:50:55