[登録されているタグ]

[記事公開日]2025/12/18

PowerShellで例外処理を行う|try/catchの基本

📝 はじめに

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コマンドを探す

やりたいことからコマンドを探すこともできます。

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • エラーをログに残したい
  • 安全に処理を続行したい
Generic filters

サイト内検索(入力すると候補が出ます)

Generic filters


Generic filters

Generic filters

すべてを開く | すべてを閉じる
ページ上部へ戻る