是否有一种简单的方法可以让-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