编写 C# PowerShell cmdlet - 如何将调试日志记录输出到 TeamCity 调用方

Writing a C# PowerShell cmdlet - how to output debug logging to TeamCity caller

我正在用 C# 编写 PowerShell cmdlet,我需要向脚本添加一些诊断日志记录,以便我可以通过 TeamCity 评估行为。在为函数启用 -Verbose 标志的情况下对 WriteVerbose 进行了试验,没有任何内容记录到 TeamCity。

cmdlet 的 Write-Host 等价物是什么?

以下 cmdlet 之间有什么区别:

万一其他人遇到这个问题,这是我了解到的:PowerShell 支持许多不同的输出流。

然而,TeamCity 所追求的是上面的 none,[C#] Console.WriteLine 足以记录到 TeamCity 跟踪日志。

回答我之前的问题:

WriteError 用于正确返回异常(这很好用,尽管有点复杂,在调试 cmdlet 时仅使用 C# throw 会使 PowerShell 崩溃)。

WriteObject 用于将自定义或现有 C# 对象从 cmdlet 返回到变量赋值(例如 [PowerShell] $x = Do-Something,其中 [C#] WriteObject(Output) 将返回到 [PowerShell] $ x).

WriteInformation(PowerShell 5 中的新增功能)是写入输出流的新方法,Write-Output 现在重定向到信息流。