PowerShell のコマンドレットは、エラー発生時に赤文字でエラーメッセージを表示します。
対話処理をしているときはこれで問題無いのですが、スクリプトでこれが発生した時に try catch でトラップしたいことがあります。
ところが、コマンドレットで発生するのはエラーであって、例外ではないため try catch ではトラップできません。
例えば、Rest API 叩くために Invoke-RestMethod 使って、エラーが帰ってきても赤色のエラーメッセージが表示されるだけです。
そんな時は、-ErrorAction オプションに Stop を指定すれば、エラー時に例外を throw してくれるので try catch でトラップできます。
例外発生時のメッセージは、$_.Exception.Message に格納されているので、これを使えばエラーメッセージをハンドリングすることが出来ます。
こんな感じ
|
余談ですが、自分で例外を throw する場合は、$ErrorActionPreference に "Stop" をセットして throw すればスクリプトを終了させることが出来ます。
|
例外については、こちらのページに詳しくまとまっているので、ディープな事を知りたいのであれば一読してください。
例外について知りたかったことのすべて - PowerShell | Microsoft Docs
https://docs.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-exceptions?WT.mc_id=WD-MVP-3688
Copyright © MURA All rights reserved.