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

如何让Ansible调用PowerShell脚本时输出Verbose日志

如何让Ansible调用PowerShell脚本时输出Verbose日志

我之前也碰到过一模一样的问题,折腾了好半天才找到靠谱的解决办法!核心问题在于Ansible的win_shell对PowerShell的多输出流处理有默认限制,Verbose流默认不会被捕获到,得手动调整调用方式才行。

下面是亲测有效的解决步骤:

1. 同时添加-Verbose参数和全流重定向

在你的Ansible任务里,修改win_shell的命令,同时加上-Verbose开关和*>&1重定向:

- name: Run Powershell script with Parameters and capture verbose logs
  win_shell: MyPS.ps1 -Param1 "{{ Param1 }}" -Verbose *>&1
  • -Verbose:强制PowerShell输出Verbose级别的内容,哪怕脚本里的$VerbosePreference被环境重置也能生效;
  • *>&1:把PowerShell所有输出流(包括Verbose、Debug、Information这些非标准流)全部重定向到标准输出流,这样Ansible就能捕获到这些内容了。

2. 配合register变量查看完整输出

如果你需要把输出保存下来查看,可以用register捕获结果,然后用debug模块打印:

- name: Run Powershell script with Parameters and capture verbose logs
  win_shell: MyPS.ps1 -Param1 "{{ Param1 }}" -Verbose *>&1
  register: ps_exec_result

- name: Print all captured output including verbose
  debug:
    var: ps_exec_result.stdout_lines

这样就能在Ansible的输出里看到Write-Verbose的内容了。

为什么之前的尝试没生效?

  • 只加-Verbose但没重定向:PowerShell的Verbose输出走的是独立的Verbose流(流4),Ansible默认只捕获标准输出(流1)和错误流(流2),所以看不到;
  • 只加*>&1但没加-Verbose:有时候Ansible调用的PowerShell环境会重置$VerbosePreference的值,导致脚本里的设置不生效,Verbose内容根本没输出;

备注:内容来源于stack exchange,提问作者SKN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:29:29