如何显示Visual Studio Online的构建任务Write-Verbose语句?

14

许多Visual Studio Online(VSO)构建任务在调试过程中使用Write-Verbose,如此示例所示。但是,如何打开Write-Verbose功能,以便在输出日志中显示调试语句?


通常在PowerShell中执行此操作的方法是使用-Verbose调用命令或设置变量$VerbosePreference = 'Continue' - Keith Hill
由于脚本具有 params,因此它会自动获取 CmdletBinding,所以 -Verbose 应该像 @KeithHill 所说的那样工作。 - Eris
感谢@KeithHill和@Eris。首先我尝试了-Verbose,但没有任何变化。然后我在PowerShell脚本中的param()之前添加了[CmdletBinding()],这样详细信息就开始打印了。 - Jeremy
更多信息,添加[CmdletBinding()]仅在我编写的PowerShell脚本时才可能进行。有几十个由Microsoft提供的任务既没有[CmdletBinding()],也没有将-Verbose参数传递给执行PowerShell脚本的能力。我正在寻找一种通用的方法来设置详细程度,该方法将在所有由Microsoft或我自己编写的脚本中起作用。 - Jeremy
3个回答

15
为了在日志中显示冗长和调试语句,您只需要将System.Debug变量添加到定义中的变量中即可。

1
谢谢。将一个名为“system.debug”的变量和值为“true”的变量添加到我的构建变量中,这样我现在可以看到PowerShell任务脚本的Write-Verbose语句了。 - Dan Carlstedt

2

以下是我成功的方法:

  1. 在脚本中使用Write-Verbose "文本" -Verbose
  2. 将构建变量system.debug分配为true

0

(将评论移至回答)

由于脚本具有参数,但没有CmdletBinding,也没有[Parameter(...)],所以不会执行-Verbose

解决方法:在params之前添加[CmdletBinding()]或者在一个或多个单独的参数变量中添加[Parameter(Mandatory=$true)]或类似的内容。

来自about_parameters

所有属性都是可选的。但是,如果省略了CmdletBinding属性,则为了被识别为高级函数,该函数必须包含Parameter属性。

about_Functions_CmdletBindingAttribute 中提供了更多关于赋予cmdlets的能力的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接