是否有一种简单的方法可以让-Verbose开关“直通”到Powershell中的其他函数调用?
我知道我可以搜索$ PSBoundParameters for the flag并执行if语句:
[CmdletBinding()]
Function Invoke-CustomCommandA {
Write-Verbose "Invoking Custom Command A..."
if ($PSBoundParameters.ContainsKey("Verbose")) {
Invoke-CustomCommandB -Verbose
} else {
Invoke-CustomCommandB
}
}
Invoke-CustomCommandA -Verbose
这样做似乎相当混乱和多余但是......思考?
答案 0 :(得分:7)
一种方法是在高级功能的顶部使用$ PSDefaultParameters:
$PSDefaultParameterValues = @{"*:Verbose"=($VerbosePreference -eq 'Continue')}
然后,使用-Verbose
参数调用的每个命令都会根据您在调用高级函数时是否使用-Verbose来设置它。
如果您只有几个命令,请执行以下操作:
$verbose = [bool]$PSBoundParameters["Verbose"]
Invoke-CustomCommandB -Verbose:$verbose
答案 1 :(得分:1)
怎么样:
$vb = $PSBoundParameters.ContainsKey('Verbose')
Invoke-CustomCommandB -Verbose:$vb