在 powershell 脚本中启用 Write-Verbose 行为

问题描述 投票:0回答:2

在 powershell 脚本中

file.ps1
,我有

Write-Host "here is a host message"
Write-Verbose "here is a verbose message"

当使用 Powershell 7 在 Windows 终端中运行

file.ps1
时,并非所有消息都会写入控制台。

PS> .\file.ps1
here is a host message

我希望能够通过

-Verbose
,以便看到
Write-Verbose

PS> .\file.ps1 -Verbose
here is a host message
here is a verbose message

脚本

file.ps1
需要什么才能启用详细消息?

powershell
2个回答
3
投票

您需要将

[CmdletBinding()]
添加到脚本中以启用 CommonParameters:

脚本.ps1

[CmdletBinding()]
param()

Write-Host "here is a host message"
Write-Verbose "here is a verbose message"

来自主持人:

PS /> ./script.ps1 -Verbose

here is a host message
VERBOSE: here is a verbose message

2
投票

如果您无法编辑脚本,您还可以在调用脚本的 shell 中将 VerbosePrefrence 设置为 Continue。

$VerbosePreference = "Continue"

这将为您要执行的所有函数启用详细输出。 查看Microsoft 帮助了解首选项。 还有很多有用的。

如果您只想为特定的 CmdLet 启用详细输出,则可以使用 $PSDefaultParameterValues 为此函数分配默认参数:

$PSDefaultParameterValues.Add("MyCmdLet:Verbose",$true)

这将为“MyCmdLet”启用详细输出。 但是,使用 $PSDefaultParameterValues 时要小心,因为你真的会把事情搞砸,特别是如果你调用其他脚本,因为默认参数值也会受到影响。

© www.soinside.com 2019 - 2024. All rights reserved.