Powershell不会将Verbosity级别传递给被调用的函数

时间:2014-04-24 19:11:55

标签: debugging powershell scripting verbosity

考虑以下脚本:

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;没有它。)

1 个答案:

答案 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
}