如何在TFS上识别写主机?

时间:2019-05-23 14:49:28

标签: powershell tfs

write-verbose将powershell的所有输出打印到TFS日志记录屏幕上,而write-host则没有。

我喜欢write-host的地方是它的-foreground color选项。

所以我想保留颜色,因此我问:

我已经尝试过write-host,但是在TFS日志中什么也没打印出来

我如何配置TFS日志记录以接受/识别write-host就像识别write-verbose一样?

1 个答案:

答案 0 :(得分:1)

有一种解决方案,可以满足注释中较窄的要求:使TFS显示Write-Host输出时不显示颜色,继续在本地显示颜色,并且不将代码中的所有Write-Host调用更改为某种形式其他。

解决方案是仅针对TFS环境重新定义Write-Host,这样最终使用某些受支持的Write-Host命令(如Write-或{{1 }}。

因此您可以将其添加到powershell脚本的开头:

Write-Verbose

请注意,此方法有一个重要限制:如果任何函数使用Write-Output然后返回某个值,则它的返回值将包括发送到if($Env:BUILD_BUILDNUMBER) { function Write-Host($object) { Write-Output $object } } 的所有内容。例如,在重新定义Write-Host之前和之后,比较Write-Host的值:

$x

为避免这种情况,您也可以使用Write-Host或任何其他function test() { Write-Host "hi" return "bye" } $x = test 代替Write-Verbose,但是它们不适用于非基本类型。它们将出错,或者仅显示类型名称。您可以在Write-重定义内进行Write-Output来防止错误,但是通常可能只显示对象的类型名称。

有关TFS环境变量的更多信息:https://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/powershell?view=azure-devops