PowerShellのスクリプトで発生した例外の種類を出力する
PowerShellスクリプトで個別の例外ごとに処理をしようにも、例外の名前がわからないということがある
その場合の調べ方はいくつかある
1. 組み込み例外の一覧から該当するものを調べる
All .Net Exceptions Listに例外が網羅されている
2. コマンドレットのリファレンスから発生しうる例外を探す
書いてそうで書いていなかった
3. 実際に例外を発生させてみて、その例外の種類を調べる
このページでは、3番目のやり方を記す
例外の種類を出力するやり方
code:ps1
try {
notexistscommand # 存在しないコマンド
} catch {
Write-Output $PSItem.Exception.GetType()
}
try catch文を使用する
tryの中に、例外を発生させるコマンドを入れる
例外が発生した際に$PSItem.Exception.GetType()を出力することで、例外の種類を調べることができる
https://gyazo.com/0a3dff0b4e3469e102438ec956f96d76
System.Management.Automation.RuntimeExceptionが発生したことがわかる
$PSItem.Exceptionについては以下のページを参照
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-exceptions?view=powershell-7.3#psitemexception
おまけ:実際に例外処理をしてみる
例外の名前がわかったので、その例外に対応した例外処理を組んでみる
code:ps1
try {
notexistscommand # 存在しないコマンド
} catch System.Management.Automation.RuntimeException {
Write-Output "存在しないコマンドが実行されました。"
}
実行してみると、例外処理がうまく動作しているのがわかる
https://gyazo.com/9d1b5755b91897e592154a1efd629fe2