首页 > 解决方案 > 为什么 TeamCity 的 PowerShell Build Runner 显示堆栈跟踪而不是错误输出?

问题描述

我正在使用 TeamCity 开箱即用的 PowerShell Build Runner 来运行构建步骤中提供的脚本。该脚本实际上是:

$ErrorActionPreference = "Stop"

$match = select-string "%EwlProjectPackagesConfigPath%" -pattern "<package id=`"(Ewl)`" version=`"([0-9\.pr-]+)`".+/>"
$ewlPackage = $match.Matches.Captures.Groups[1]
$version = $match.Matches.Captures.Groups[2]

$devUtil = Get-ChildItem "%PackagesDirectory%\$ewlPackage.$version\Development Utility\EnterpriseWebLibrary.DevelopmentUtility.exe"
& $devUtil "%SolutionDirectory%" UpdateAllDependentLogic
if ($LastExitCode -ne 0) {
    Throw "Process exit code: $LastExitCode";

操作员调用的 exe&遇到了问题。它输出到标准错误并返回代码 1。这是 TeamCity 中输出的屏幕截图:

TeamCity 构建输出的屏幕截图,其中显示 PowerShell 堆栈跟踪而不是完整的错误输出

TeamCity 中的输出仅显示一行错误输出(2019 年 6 月 26 日下午 2:48:55:更新数据库逻辑失败。),然后是脚本中问题的堆栈跟踪。

我无法在 TeamCity 之外重现此内容。如果我将脚本保存到我的桌面并运行以下命令,它应该与 TeamCity 正在执行的命令相同:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy ByPass -File "C:\Users\Administrator\Desktop\Test.ps1"

然后我收到大约一百行错误输出(我希望在 TeamCity 中看到),我根本看不到堆栈跟踪。

  1. 为什么 TeamCity 不捕获整个错误输出?
  2. TeamCity 如何显示堆栈跟踪,为什么我以相同方式运行脚本时不显示?

标签: powershellteamcity

解决方案


推荐阅读