powershell 例外処理とexit
通常、powershellでexit 0 が正常終了、0以外が異常終了となる。
終了コードは「%errorlevel%」環境変数に格納されるため、PowerShellスクリプトを実行した後、echo %errorlevel%と記述して終了コードを表示できる。
powershellスクリプト側はこんな感じ。
try {
# 例外が発生する可能性のあるコード
}
catch {
# 例外が発生した場合の処理(エラーメッセージを表示してみよう)
Write-Host "An error occurred: $($_.Exception.Message)"
exit 1
}
# 正常終了
exit 0
vbs側では、こんな感じ。
'文字コード:cp932 (sjis)
Option Explicit
' エラーが発生するとダイアログが出て処理が終わらない問題対策
On Error Resume Next
Dim objShell
Dim PS1File
Dim Arguments
Dim exitcode
Set objShell = CreateObject( "WScript.Shell" )
PS1File = "hoge.ps1"
' 必要に応じて引数を与える(日本語の受け渡しは注意)
Arguments = ""
'--------------------------------------------------------------------
exitcode = objShell.run ("PowerShell.exe -ExecutionPolicy RemoteSigned -File """ & PS1File & """ " & Arguments, 0, True)
set objShell = Nothing