有没有一种简单的方法可以使-Verbose开关“通过”到Powershell中的其他函数调用?
我知道我可以在$ PSBoundParameters中搜索该标志并执行一条if语句:
[CmdletBinding()]
Function Invoke-CustomCommandA {
Write-Verbose "Invoking Custom Command A..."
if ($PSBoundParameters.ContainsKey("Verbose")) {
Invoke-CustomCommandB -Verbose
} else {
Invoke-CustomCommandB
}
}
Invoke-CustomCommandA -Verbose
这样做似乎很麻烦和多余。
最佳答案
一种方法是在高级功能的顶部使用$ PSDefaultParameters:
$PSDefaultParameterValues = @{"*:Verbose"=($VerbosePreference -eq 'Continue')}
然后,使用
-Verbose
参数调用的每个命令都将对其进行设置,具体取决于调用高级功能时是否使用-Verbose。如果只有几个命令,请执行以下操作:
$verbose = [bool]$PSBoundParameters["Verbose"]
Invoke-CustomCommandB -Verbose:$verbose