質問

カスタム PowerShell コマンドレットを作成していますが、パラメーターを検証する適切な方法がどれであるかを知りたいと思っています。
これはプロパティ セット アクセサーまたはコマンドレットの実行中に実行できると思いました。

[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、あるいはまったく別のものでしょうか?

役に立ちましたか?

解決

可能であれば、次のように指定してパラメータをランタイムによって検証することをお勧めします。 検証属性 パラメータ定義について。

Windows PowerShell は、コマンドレット パラメーターに渡された引数をいくつかの方法で検証できます。Windows PowerShell は、引数の文字の長さ、範囲、およびパターンを検証できます。使用可能な引数の数 (カウント) を検証できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top