トップ回答者
ValidatePatternでエラーとなった時の判定方法

質問
-
こんにちは。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
回答
-
チャブーンです。
この件ですが、parameter validation attributesに関しては、以下のスクリプトのように「ErrorMessage引数」を入れておくことで、任意の文字列を標準出力で出力できるようです。要するに実行結果の標準出力から拾う、という方法はとれないのでしょうか?
https://github.com/PowerShell/PowerShell/issues/3765
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答の候補に設定 FarenaMicrosoft contingent staff, Moderator 2019年12月24日 8:01
- 回答としてマーク Haruka6002Microsoft contingent staff, Moderator 2020年3月18日 1:59
すべての返信
-
M.SUDOさん、こんにちは。フォーラムオペレーターのFarenaです。
TechNetフォーラムにご投稿くださいましてありがとうございます。
その後のご状況いかがでしょうか。
何か情報をお持ちの方がいたら、共有いただけますと幸いです。
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com. -
チャブーンです。
この件ですが、parameter validation attributesに関しては、以下のスクリプトのように「ErrorMessage引数」を入れておくことで、任意の文字列を標準出力で出力できるようです。要するに実行結果の標準出力から拾う、という方法はとれないのでしょうか?
https://github.com/PowerShell/PowerShell/issues/3765
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答の候補に設定 FarenaMicrosoft contingent staff, Moderator 2019年12月24日 8:01
- 回答としてマーク Haruka6002Microsoft contingent staff, Moderator 2020年3月18日 1:59