2009-10-08 123 views
4

我在寫一個自定義的PowerShell cmdlet,我想知道哪個是驗證參數的正確方法。
我認爲,這既可以在屬性set訪問或執行cmdlet過程中完成:PowerShell cmdlet參數驗證

[Cmdlet(VerbsCommon.Add,"X")] 
public class AddX : Cmdlet { 

    private string _name; 

    [Parameter(
     Mandatory=false, 
     HelpMessage="The name of the X")] 
    public string name { 
     get {return _name;} 
     set { 
      // Should the parameter be validated in the set accessor? 
      if (_name.Contains(" ")) { 
       // call ThrowTerminatingError 
      } 
      _name = value; 
     } 
    } 

    protected override void ProcessRecord() { 
     // or in the ProcessRecord method? 
     if (_name.Contains(" ")) { 
      // call ThrowTerminatingError 
     } 
    } 
} 

這是「標準」的做法?屬性設置器,ProcessRecord或者完全不同的東西?

回答

7

如果可能,最好通過在參數定義上指定Validation Attributes來驗證參數。

Windows PowerShell可以通過多種方式驗證傳遞給cmdlet參數的參數。 Windows PowerShell可以驗證參數的長度,範圍和字符模式。它可以驗證可用參數的數量(計數)。

+0

正是我在找什麼,謝謝! – 2009-10-08 14:52:37