PowerShell コマンドレットのパラメーターの検証
-
20-09-2019 - |
質問
カスタム 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 は、引数の文字の長さ、範囲、およびパターンを検証できます。使用可能な引数の数 (カウント) を検証できます。
所属していません StackOverflow