前提
PowerShellを使ったシェルスクリプトの作成を実施しています。
例外処理を行うためにtry~catch文を用いています。
ここで、catch文の$_.Exception.Message
を更にif文を使って分岐処理を行いたいです。
実現したいこと
- Powershellの例外をキャッチした中で、例外発生時に発生するメッセージ
$_.Exception.Message
を更にif文を使って分岐処理をしたい。
発生している問題・エラーメッセージ
$_.Exception.Message
がユーザー名またはパスワードが正しくありません。
を表している時、if文の条件式でtrueと判定できていない。
if($eMsg -eq "ユーザー名またはパスワードが正しくありません。") { #ここの処理が実行できていない(今回の問題点) #今回個の処理を実行させるようにしたい。 }
全体のコード
PowerShell
1try{ 2 #処理 3} 4catch [System.Runtime.InteropServices.COMException]{ 5 $eMsg = $_.Exception.Message 6 7 if($eMsg -eq "ユーザー名またはパスワードが正しくありません。") 8 { 9 #処理 10 } 11 else{ 12 #処理 13 } 14} 15catch [Exception]{ 16 #処理 17}
試したこと
PowerShellから例外のエラーメッセージを$eMsg
を格納する行にブレークポイントを設定して、$eMsg
を格納する行まで実行させた。
その後、コンソール画面から$eMsgを以下のように確認したが、ユーザー名またはパスワードが正しくありません。
と等しい結果となっていなかった。
>$eMsg ユーザー名またはパスワードが正しくありません。 >$eMsg -eq "ユーザー名またはパスワードが正しくありません。" False
$eMsgの型を調べてもString型なので、変数の型が間違っていないことを確認した。
補足情報(FW/ツールのバージョンなど)
今回試したPowerShellのバージョンは以下の通りです。
$PSVersionTable
を実行すると以下の内容が出力された。
Name Value ---- ----- PSVersion 5.1.19041.1682 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.19041.1682 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
回答1件
あなたの回答
tips
プレビュー