【问题标题】:How to show Visual Studio Online build task Write-Verbose statements?如何显示 Visual Studio Online 构建任务 Write-Verbose 语句?
【发布时间】:2015-09-14 13:12:01
【问题描述】:

许多 Visual Studio Online (VSO) build tasks 使用 Write-Verbose 进行调试,如 this example 所示,但是如何打开 Write-Verbose 以便调试语句出现在输出日志中?

【问题讨论】:

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

标签: powershell build azure-devops


【解决方案1】:

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

【讨论】:

  • 谢谢。向我的构建变量添加一个名为“system.debug”且值为“true”的变量是可行的,我现在可以从 PowerShell 任务脚本中看到 Write-Verbose 语句。
【解决方案2】:

这对我有用:

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

【讨论】:

    【解决方案3】:

    (只是将 cmets 移动到答案)

    由于脚本有参数,但没有CmdletBinding,也没有[Parameter(...)],所以-Verbose 不被接受。

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

    来自about_parameters

    所有属性都是可选的。但是,如果您省略 CmdletBinding 属性,然后被识别为高级功能,该功能 必须包含 Parameter 属性。

    about_Functions_CmdletBindingAttribute 提供有关赋予 cmdlet 的能力的更多信息。

    【讨论】:

      猜你喜欢
      • 2018-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      相关资源
      最近更新 更多