none
ValidatePatternでエラーとなった時の判定方法 RRS feed

  • 質問

  • こんにちは。PowerShellのvalidatePatternを使った時の挙動でご教示下さい。

    例えば、以下の様なコードで入力内容を確認するps1をバッチから起動します。

    この場合、Paramで実行しているValidate失敗を検知する方法はありますでしょうか?


    Validatepatternの結果、Validateに失敗して起動しないのは良いのですが、バッチから呼び出すと$LastExitCodeは前回の実行結果、$?もTrueが戻ってくるようなので、Validate失敗したのかを判定する方法が判りませんでした。

    以下の様に2>&1で標準出力へのリダイレクトは出来るので、エラーの内容は判るのですが...。

    何卒よろしくお願い致します。

    ----

    test.bat

    Powershell -Command ".\hoge.ps1 ;exit $LASTEXITCODE" 2>&1


    hoge.ps1

    Param(
    [ValidatePattern('^[C-Z]$')][String]$Path
    )

    (プログラム本体)

    Exit 0


    PS D:\Infra_scripts\shell> .\hoge.ps1 -Path 123
    D:\Infra_scripts\shell\hoge.ps1 : パラメーター 'Path の引数を確認できません。引数 "123" が "^[C-Z]$" パターンに一致しません。"^[C-Z]$" に一致する引数を指定して、コマンドを再度実行してください。
    発生場所 行:1 文字:26
    + .\erroralways1.ps1 -Path 123
    +                          ~~~
        + CategoryInfo          : InvalidData: (:) [erroralways1.ps1]、ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationError,erroralways1.ps1

    2019年12月18日 5:12

回答

すべての返信