2013-10-31 66 views
0

考慮此cmdlet(usings刪除):PowerShell的:parametersets,需要一個或另一個

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太棒了,是否有通過運行時強制執行的方法?

回答

3

你可以指示PowerShell將默認爲命名的參數集,由CmdletAttribute屬性的DefaultParameterSetName財產的方式:

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