はじめに
前提
下記環境での動作を前提としている。
PowerShell 5.1
本記事について
実行ポリシーを一時的に変更することで、PowerShellスクリプト(.ps1)を、バッチから実行する方法を示す。
※ 実行ポリシーは、PowerShellスクリプトの実行終了とともに、元に戻る。
バッチから実行する方法
- PowerShellの「ExecutionPolicy」オプションに「Unrestricted」を指定する。
- PowerShellスクリプトのパスを指定する。
- バッチとして保存する。
Hoge.ps1
Write-Host "はろーわーるど"
実行バッチ.bat
PowerShell -ExecutionPolicy Unrestricted Hoge.ps1
TIPS
起動引数を取得したい時
起動引数を取得したい時は、実行バッチの起動引数として、任意の文字列を指定する。
Fuga.ps1
Write-Host $args[0]
実行バッチ引数つき.bat
PowerShell -ExecutionPolicy Unrestricted Fuga.ps1 %1
呼び出しバッチ引数つき.bat "Huga"
終了コードを取りたい時
終了コードを指定した場合は、PowerShellスクリプト側で、終了コードを指定するだけでよい。
※ PowerShellスクリプト側で終了コードを指定していない場合は、「%ERRORLEVEL%」が「0」になる。
Piyo.ps1
exit 1
StartPiyo.bat
PowerShell -ExecutionPolicy Unrestricted Piyo.ps1
echo %ERRORLEVEL%
REM %ERRORLEVEL%は、1である。
さいごに
本記事では、実行ポリシーを一時的に変更し、バッチからPowerShellスクリプトを実行する方法を示した。
※ 本記事は、実行ポリシーの一時的な変更を推奨するものではない。
参考文献