考虑以下脚本:
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'中调用)也使用隐式详细参数调用。有什么方法可以避免这种情况吗? (换句话说,使用详细开关拨打电话' a#39;没有它。)
答案 0 :(得分:3)
如果要从外部函数a
抑制b
的详细输出,可以使用$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,当您从$False
函数调用a
时,您必须将详细设置为b
。
function b{
[CmdletBinding()]
Param()
Write-Verbose "B VERBOSE"
Write-Host "B NORMAL"
a -Verbose:$false
}