2

考虑以下脚本:

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”)。

4

1 回答 1

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调用时将详细设置为。ab

function b{
    [CmdletBinding()]
    Param()

    Write-Verbose "B VERBOSE"
    Write-Host "B NORMAL"

    a -Verbose:$false
}
于 2014-04-24T19:23:06.050 回答