powershell - 将 ParameterSet 值传递给其他 ParameterSet 会导致 AmbiguousParameterSet 异常
问题描述
我正在尝试使用另一个带有参数集的 PowerShell 函数来调用具有参数集的 PowerShell 函数。在下面的代码中,我想Entry-Point
使用-ABC
or-DEF
开关来调用,而不是同时使用。但是,当我Entry-Point
使用任意数量的参数运行时,会出现AmbiguousParameterSet
以下异常。
function My-Function {
[CmdletBinding(DefaultParameterSetName='ABC')]
Param(
[Parameter(Mandatory=$false, ParameterSetName='ABC', Position=1)]
[switch] $ABC,
[Parameter(Mandatory=$false, ParameterSetName='DEF', Position=1)]
[switch] $DEF,
[switch] $Extra
)
echo $ABC
echo $DEF
echo $Extra
}
function Entry-Point {
[CmdletBinding(DefaultParameterSetName='ABC')]
Param(
[Parameter(Mandatory=$false, ParameterSetName='ABC', Position=1)]
[switch] $ABC,
[Parameter(Mandatory=$false, ParameterSetName='DEF', Position=1)]
[switch] $DEF,
[switch] $Extra
)
My-Function -ABC:$ABC -DEF:$DEF -Extra:$Extra
}
My-Function : 无法使用指定的命名解析参数集 参数。 在行:24 字符:1 + 我的功能 -ABC:$ABC -DEF:$DEF -Extra:$Extra + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [My-Function], ParameterBindingException + FullyQualifiedErrorId : AmbiguousParameterSet,My-Function
如何将参数-ABC
和-DEF
- 无论是否指定每个参数 - 从函数Entry-Point
传递到函数My-Function
?
解决方案
快速的答案是飞溅。PowerShell 允许您将哈希表作为参数提供给函数(使用 @ 而不是 $),并使用哈希表的键作为参数名称,值是参数值。
此外,每个高级函数都会自动将 $PSBoundParameters 设置为传入参数的哈希表。
所以......你可以说:
My-Function @PSBoundParameters
推荐阅读
- java - 如何使用 guice 在我的控制器中注入我的服务类?
- python - 我只需要在 pyspark 数据框中附加那些具有非空值的人
- spring - 使用 oauth2-client 作为隐式授权类型时解决 [authorization_request_not_found]
- java - 谷歌地图不能在所有设备上运行,而在其他设备上运行。我该怎么办?
- indexing - CouchDB 中 $elemMatch 的索引
- javascript - Javascript 代码在本地工作,但在现场不工作
- swift - 将 SwiftUI 视图添加到 UITableViewCell contentView
- docker - WebUI.maximizeWindow() 不适用于 Katalon Docker 图像?
- reactjs - 假设初始祖先 useEffect 将在所有后代 useEffect 之后运行是否安全?
- r - 覆盖 R 包中的全局选项的正当理由?