考虑以下脚本:
function a{
[CmdletBinding()]
Param()
Write-Verbose "A VERBOSE"
Write-Host "A NORMAL"
}
function b{
[CmdletBinding()]
Param()
Write-Verbose "B VERBOSE"
Write-Host "B NORMAL"
a
}
b -Verbose
如果我们使用指定的详细参数开关调用函数“b”,则函数“a”(在“b”中调用)也会使用隐式详细参数调用。有什么办法可以避免这种情况吗? (换句话说,使用 Verbose 开关调用“b”,不使用它调用“a”)。
最佳答案
如果你想抑制来自外部函数 b
的 a
的详细输出,你可以使用 $PSDefaultParameterValues
变量,从 PowerShell 开始v3.
function a{
[CmdletBinding()]
Param()
Write-Verbose "A VERBOSE"
Write-Host "A NORMAL"
}
function b{
[CmdletBinding()]
Param()
Write-Verbose "B VERBOSE"
Write-Host "B NORMAL"
a
}
$PSDefaultParameterValues['a:Verbose'] = $False
b -Verbose
对于 PowerShell v2,当您从 b
函数调用 a
时,您必须将 verbose 设置为 $False
。
function b{
[CmdletBinding()]
Param()
Write-Verbose "B VERBOSE"
Write-Host "B NORMAL"
a -Verbose:$false
}
关于debugging - Powershell 不会将详细级别传递给被调用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23277783/