🧩 PowerShellの構文エラー原因TOP3:全角引用符・NBSP・BOM
PowerShellスクリプトを実行したときに、
「UnexpectedToken」や「文字列に終端記号がありません」という赤エラーが出て動かない——。
そんな経験はありませんか?
実はこれらの構文エラー、文法ミスではなく「文字の種類」 が原因で起きていることが非常に多いです。
特に日本語環境では、以下の3つがPowerShellを混乱させる典型的なトラブル要因です。
🥇 第1位:全角引用符(“ ”、” ”)
最も多いのがこれ。
WordやWebサイト、ブログなどからコードをコピーした際に、
「普通のダブルクォート(")」が「全角のスマートクォート(“ や ”)」に変わってしまう現象です。
PowerShellはこれを文字列の区切りとして認識できません。
そのため以下のようなエラーが出ます。
🔧 対処法:
-
全角の “ ” を半角の ” ” に置換
-
コードエディタで「スマートクォート自動変換」をOFFにする
🥈 第2位:NBSP(ノーブレークスペース)
見た目は半角スペースですが、内部的には U+00A0 という別の文字です。
HTMLページやブログからコピーしたときに非常によく混入します。
PowerShell上では、
「半角スペースとして解釈されない」ため構文が崩れ、UnexpectedToken などの不可解なエラーが出ます。
🔧 対処法:
-
サクラエディタやVS Codeで「不可視文字表示」をONにする
-
以下のコマンドでNBSPやゼロ幅文字を除去可能:
🥉 第3位:BOM付きUTF-8で保存されている
UTF-8自体はPowerShellでも推奨されていますが、
「BOM(Byte Order Mark)」付きUTF-8 で保存された .ps1 は
スクリプトの先頭に見えない U+FEFF が混入し、これが原因で構文エラーになる場合があります。
🔧 対処法:
-
ファイルを UTF-8(BOMなし) で保存
-
サクラエディタやVS Codeで「保存形式:UTF-8(BOMなし)」を明示的に選択
✅ エラーを防ぐためのおすすめ設定
PowerShellのスクリプトを書くときは、以下の設定を徹底すると安心です。
🧰 トラブルを一掃するワンライナー
既におかしな文字が混入している場合は、
次のPowerShellコマンドでクリーンアップできます。
これで、全角クォート・NBSP・BOMをすべて除去できます。
🚀 まとめ
PowerShellの構文エラーの多くは「コードが壊れている」のではなく、
文字の種類が混ざっているだけ です。
-
“全角クォート” → 半角
" "に直す -
“NBSP” → 普通のスペースに置換
-
“BOM付きUTF-8” → BOMなしに保存
この3点を意識するだけで、
もう意味不明な赤いエラーに悩まされることはありません。
