もくじ
📝 はじめに
PowerShellでスクリプトを書いていて、
「途中でエラーが出て処理が止まってしまった」
「エラーが出たときだけ別の処理をしたい」
と感じたことはありませんか?
そんなときに使うのが、PowerShellの例外処理である
try / catch です。
この記事では、エラーを安全に受け止めて処理を続けるための基本を、
初めて使う方でも分かるように解説します。
- ファイル操作で、存在しない場合の処理を分けたい
- ネットワークや外部コマンドの失敗を検知したい
- スクリプトを途中で止めずに最後まで実行したい
✅ このコマンドでできること(要点)
- エラーが発生した処理だけを安全に捕捉できる
- エラー発生時の処理を明示的に分けられる
- スクリプトの強制終了を防げる
- エラー内容を変数として扱える
✅ try / catch でできること
try / catch は、
「うまくいく前提の処理」と「失敗した場合の処理」を分けて書くための構文です。
PowerShellでは、エラーが出ると処理が止まることがありますが、
try / catch を使うことで、
エラーを想定した安全なスクリプトを作れます。
考え方としては、「失敗するかもしれない処理を箱に入れておく」イメージです。
🧩 基本構文
try {
# 実行したい処理
}
catch {
# エラーが発生したときの処理
}
try の中でエラーが発生すると、
処理は catch に移ります。
▶ 基本的な使い方(まずこれだけ)
🔹 ファイル操作の例
try {
Get-Content "C:\test\data.txt"
}
catch {
Write-Output "ファイルが見つかりませんでした"
}
ファイルが存在すれば内容が表示され、
存在しない場合は catch 側のメッセージが表示されます。
このメッセージが出ていれば、エラーを正しく捕捉できています。
🔹 単純なコマンド実行の例
try {
Get-Item "C:\no_such_folder"
}
catch {
"エラーが発生しました"
}
エラーが出てもスクリプト自体は止まりません。
エラーが出なければ、そのまま次の処理に進めます。
🛠 よく使われる指定例
🔹 エラー内容を取得する
try {
Get-Item "C:\no_such_folder"
}
catch {
$_.Exception.Message
}
$_ にはエラー情報が格納されています。
内容が表示されていれば、エラー詳細を正しく取得できています。
🔹 finally を使う
try {
Get-Item "C:\test\data.txt"
}
catch {
"エラーが発生しました"
}
finally {
"処理が完了しました"
}
finally は、
成功・失敗に関係なく必ず実行される処理です。
💼 実務でよく使う使用例(応用)
🔹 フォルダ作成を安全に行う
try {
New-Item -ItemType Directory -Path "C:\logs"
}
catch {
"フォルダ作成に失敗しました"
}
🔹 処理を継続したい場合
try {
Remove-Item "C:\temp\old.txt"
}
catch {
"削除できませんでしたが処理を続行します"
}
- Test-Path と併用して事前チェック
- Write-Error でログに残す
- Out-File でエラー内容を保存
🧩 よくある勘違い・つまずきポイント
- すべてのエラーが自動的に catch されるわけではない
- 非終端エラーは catch に入らない場合がある
- -ErrorAction を指定しないと捕捉できないことがある
- try の外で起きたエラーは catch できない
- catch は try の直後に書く必要がある
⚠ エラー・うまく動かないときの確認ポイント
- -ErrorAction Stop を指定しているか
- try の中に対象の処理が正しく入っているか
- 管理者権限が必要な操作ではないか
- パスや引数が環境に合っているか
🧠 注意点
try / catch を多用しすぎると、
本来気付くべきエラーを見逃す可能性があります。
「想定している失敗」だけに使うのがおすすめです。
📌 まとめ
- try / catch はエラーを安全に扱うための基本構文
- エラー時の処理を明示的に書ける
- スクリプトの安定性が大きく向上する
- 次は -ErrorAction やログ出力も試すと理解が深まる
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- エラーをログに残したい
- 安全に処理を続行したい
