亀の甲羅2

今日もまた朝とく起きて励まなん窓に明るきありあけの月

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