Powershell:参数,需要一个或另一个

时间:2013-10-31 08:46:18

标签: .net powershell cmdlet

考虑这个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非常棒,有没有办法通过运行时?

1 个答案:

答案 0 :(得分:3)

您可以通过DefaultParameterSetName属性的CmdletAttribute属性指示PowerShell默认为命名参数集:

[Cmdlet("Foo", "Bar", DefaultParameterSetName = "Foo")]
public class Foo : Cmdlet
{
   // ...
}