许多Visual Studio Online(VSO)构建任务在调试过程中使用Write-Verbose,如此示例所示。但是,如何打开Write-Verbose功能,以便在输出日志中显示调试语句?
许多Visual Studio Online(VSO)构建任务在调试过程中使用Write-Verbose,如此示例所示。但是,如何打开Write-Verbose功能,以便在输出日志中显示调试语句?
以下是我成功的方法:
Write-Verbose "文本" -Verbose
system.debug
分配为true
(将评论移至回答)
由于脚本具有参数,但没有CmdletBinding
,也没有[Parameter(...)]
,所以不会执行-Verbose
。
解决方法:在params
之前添加[CmdletBinding()]
或者在一个或多个单独的参数变量中添加[Parameter(Mandatory=$true)]
或类似的内容。
所有属性都是可选的。但是,如果省略了CmdletBinding属性,则为了被识别为高级函数,该函数必须包含Parameter属性。
about_Functions_CmdletBindingAttribute 中提供了更多关于赋予cmdlets的能力的信息。
-Verbose
调用命令或设置变量$VerbosePreference = 'Continue'
。 - Keith Hillparams
,因此它会自动获取CmdletBinding
,所以-Verbose
应该像 @KeithHill 所说的那样工作。 - Eris-Verbose
,但没有任何变化。然后我在PowerShell脚本中的param()
之前添加了[CmdletBinding()]
,这样详细信息就开始打印了。 - Jeremy[CmdletBinding()]
仅在我编写的PowerShell脚本时才可能进行。有几十个由Microsoft提供的任务既没有[CmdletBinding()]
,也没有将-Verbose
参数传递给执行PowerShell脚本的能力。我正在寻找一种通用的方法来设置详细程度,该方法将在所有由Microsoft或我自己编写的脚本中起作用。 - Jeremy