考虑这个Cmdlet(使用已删除):
public class Foo : Cmdlet
{
[Parameter(Mandatory = true, ParameterSetName = "Foo"]
public string A { get; set; }
[Parameter(Mandatory = true, ParameterSetName = "Bar"]
public string B { get; set; }
[Parameter(Mandatory = true, ParameterSetName = "Bar"]
public string C { get; set; }
protected override void ProcessRecord()
{
/* magic goes here */
}
}
现在您可以执行此Cmdlet的方式如下:
# like this
Foo
# or
Foo -A "test"
# or
Foo -B "test" -C "test"
有和A和B不起作用,也不只使用B(需要C)。
所以没关系,但是我想阻止你只需输入Foo
来执行Cmdlet,现在我可以在代码中检查它,但是因为Powershell非常棒,有没有办法通过运行时?
答案 0 :(得分:3)
您可以通过DefaultParameterSetName
属性的CmdletAttribute
属性指示PowerShell默认为命名参数集:
[Cmdlet("Foo", "Bar", DefaultParameterSetName = "Foo")]
public class Foo : Cmdlet
{
// ...
}