作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在写一个函数,根据条件选择给定路径下的文件。
这些是我的输入参数:
[CmdletBinding(DefaultParametersetName="Set1")]
Param(
[Parameter(Position=0,Mandatory=$true)]
[String] $Path,
[Parameter(ParameterSetName="Set2")]
[Parameter(ParameterSetName="Set6")]
[Parameter(ParameterSetName="Set7")]
[String] $OwnedBy,
[Parameter(ParameterSetName="Set3")]
[Parameter(ParameterSetName="Set8")]
[Parameter(ParameterSetName="Set9")]
[String] $NotOwnedBy,
[Parameter(ParameterSetName="Set4")]
[Parameter(ParameterSetName="Set6")]
[Parameter(ParameterSetName="Set8")]
[String] $BiggerThan,
[Parameter(ParameterSetName="Set5")]
[Parameter(ParameterSetName="Set7")]
[Parameter(ParameterSetName="Set9")]
[String] $SmallerThan
)
My-Function : Parameter set cannot be resolved using the specified named parameters.
At line:1 char:3
+ My-Function <<<< aaa -OwnedBy sss
+ CategoryInfo : InvalidArgument: (:) [My-Function], ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,My-Function
最佳答案
正如Ansgar所说,您有重叠的子集。无需重新考虑策略即可解决此问题的最简单方法是保留当前参数集并使所有参数变为强制性(这需要版本3.0+):
function Test {
[CmdletBinding(DefaultParametersetName="Set1")]
Param(
[Parameter(Position=0,Mandatory=$true)]
[String] $Path,
[Parameter(ParameterSetName="Set2",Mandatory=$true)]
[Parameter(ParameterSetName="Set6",Mandatory=$true)]
[Parameter(ParameterSetName="Set7",Mandatory=$true)]
[String] $OwnedBy,
[Parameter(ParameterSetName="Set3",Mandatory=$true)]
[Parameter(ParameterSetName="Set8",Mandatory=$true)]
[Parameter(ParameterSetName="Set9",Mandatory=$true)]
[String] $NotOwnedBy,
[Parameter(ParameterSetName="Set4",Mandatory=$true)]
[Parameter(ParameterSetName="Set6",Mandatory=$true)]
[Parameter(ParameterSetName="Set8",Mandatory=$true)]
[String] $BiggerThan,
[Parameter(ParameterSetName="Set5",Mandatory=$true)]
[Parameter(ParameterSetName="Set7",Mandatory=$true)]
[Parameter(ParameterSetName="Set9",Mandatory=$true)]
[String] $SmallerThan
)
}
关于powershell - 具有多个ParameterSetName的函数中的AmbiguousParameterSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31750263/
在 C# 中,您可以获得当前 ParameterSetName在 ProcessRecord覆盖 PowerShell Cmdlet用这样的代码: switch (ParameterSetName)
我的问题是关于参数字段“parametersetname”,它神秘地需要包含在内。 我有这个名为 test.ps1 的 PowerShell (v3) 脚本: param([parameter(par
我在自己编写的自定义函数中发现了一些奇怪的行为,因此我编写了一些具有不同特征的快速测试函数来展示这些行为。当参数集足够相似以至于唯一的区别因素是通过管道接收的对象的类型时,就会出现问题。 首先,我做了
我是一名优秀的程序员,十分优秀!