PowerShell は Microsoft によって開発されたスクリプト言語であり、システム管理や自動化タスクに広く使用されています。
PowerShell スクリプトの終了コード(Exit Codes)について、使い方をメモしておきます。
PowerShell の終了コード
PowerShell スクリプトやコマンドが実行を終了する際に、スクリプトの実行結果を示す数値(終了コード)を返します。この終了コードは、スクリプトが成功したか失敗したかを示す指標として使用され、他のスクリプトやアプリケーションがその結果に基づいて処理を分岐させるのに役立ちます。
- 0
実行が成功し、エラーが発生していないことを示す。 - 0以外
何らかのエラーが発生したことを示す。
終了コードの設定方法
PowerShell で終了コードを設定するには、exit
ステートメントを使用します。exit
の後に続く数値が終了コードとして設定されます。
成功の終了コードを返すスクリプト
# 成功を示す終了コード 0 を返すスクリプト
Write-Output "処理が正常に完了しました。"
exit 0
このスクリプトは処理が正常に完了したことを示すメッセージを出力し、終了コード 0
を返します。
エラーの終了コードを返すスクリプト
# エラーを示す終了コード 1 を返すスクリプト
Write-Output "エラーが発生しました。"
exit 1
このスクリプトはエラーが発生したことをユーザーに通知し、終了コード 1
を返して異常終了を示します。
終了コードの確認方法
他のスクリプトやプログラムから PowerShell スクリプトを呼び出す場合、終了コードを利用して呼び出し元のスクリプトが次にどのような処理を行うかを決定することができます。
$exitCode
以下のスクリプトは別の PowerShell スクリプトを実行し、その終了コードに基づいて成功か失敗かを判断しています。終了コードが 0
の場合は成功と判断し、それ以外の場合はエラーコードと共に失敗を通知します。
# PowerShell スクリプトを実行し、終了コードに基づいて処理を分岐する
$exitCode = powershell -File "path\to\your\script.ps1"
if ($exitCode -eq 0) {
Write-Output "スクリプトが成功しました。"
} else {
Write-Output "スクリプトが失敗しました。終了コード: $exitCode"
}
$LastExitCode
$LastExitCode
変数を使用して最後に実行されたプロセスの終了コードを取得することもできます。
# 外部スクリプトを実行し、終了コードを確認する
powershell -File "path\to\your\script.ps1"
Write-Output "最後の終了コード: $LastExitCode"
カスタム終了コード
一般的に 0
は成功を意味し、1
や他の非ゼロ値は様々な種類のエラーを表します。
より詳細なエラーハンドリングを実現するために、異なる種類のエラーに対して異なる終了コードを割り当てることができます。
例えば、スクリプトがデータベース接続に失敗した場合は 100
、ファイルアクセスの問題が発生した場合は 101
といった具体的なコードを定義することが可能です。これにより、呼び出し元のスクリプトがエラーの原因を迅速に特定し、適切な対処を行うことができます。
以下の例では、データベース接続時にエラーが発生した場合、カスタム終了コード 100
を使用してエラーを通知しています。
# 特定のエラーコードを設定するスクリプト
try {
# 何かの処理を試みる
# エラーが発生する可能性のあるコマンド
Invoke-Command -ScriptBlock {
throw "データベース接続失敗"
}
} catch {
Write-Output "エラーが発生しました: $_"
exit 100
}