2009-10-08 89 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