分かりやすく、使いやすく。

呼び出し元のバッチに戻り値を返す方法

スポンサーリンク

バッチファイルから Powershell の処理を記述したファイルを実行し、戻り値を取得する場合、普通に %ERRORLEVEL% を参照すると 0 または 1 の値しか取得することができません。( 0 以外の値は全て 1 として返されます。)

Powershell のファイルが exit する際に返した値をバッチファイルから取得する場合、バッチファイルを次のように記述する必要があります。

バッチファイルからtest.ps1を実行する場合
1
powershell ".\test.ps1;exit $LASTEXITCODE" 

上記のように記述すれば %ERRORLEVEL% に exit で返した値がセットされるようになります。

Powershell から戻り値を受け取るバッチファイルのサンプル

まずは Powershell のファイルを準備します。以下のサンプルでは常に戻り値 9 を返します。

test.ps1
1
2
Write-Host 'Powershell:9を返します'
exit 9 

次に上記の test.ps1 を呼び出すバッチファイル test.bat を準備します。

test.bat
1
2
3
4
5
6
7
8
@@echo off
echo バッチファイル処理開始
 
powershell ".\test.ps1;exit $LASTEXITCODE"
 
echo Powershellから受け取った戻り値→%ERRORLEVEL%
 
echo バッチファイル処理終了 

上記の 2 ファイルを d:\temp フォルダに格納し、 test.bat をコマンドプロンプトから実行した結果は次の通りです。

D:\temp\>test.bat
バッチファイル処理開始
Powershell:9を返します
Powershellから受け取った戻り値→9
バッチファイル処理終了 
スポンサーリンク