この記事で直せること
日本語のコメントやメッセージが入った .ps1 を UTF-8 で保存して実行したら、文字化けする。ひどいときは文字化けでは済まず、構文エラーで止まる。この原因と、確実に直る保存方法です。
2026年10月21日に実際に踏んだときのエラーは、これでした。
文字列に終端記号 " がありません。
引用符は閉じているのに、閉じていないと言われる。しかもエラー文の中で、スクリプトに書いたはずの「日付」という語が「日仁E」に化けていました。
原因: PowerShell 5.1 は BOM の無い UTF-8 を UTF-8 と見なさない
Windows に最初から入っている Windows PowerShell 5.1(powershell.exe)は、スクリプトファイルを読むときに BOM を見て文字コードを決めます。BOM が無ければ、その機械の ANSI コードページ、日本語環境なら cp932(Shift_JIS)として読みます。UTF-8 で保存してあっても関係ありません。
UTF-8 の日本語は1文字あたり3バイトなので、それを cp932 として2バイトずつ読んだ分だけずれます。ずれた先に引用符やバッククォートと同じバイトが現れると、文字化けが構文の破壊に変わります。「終端記号がありません」はこれです。文字列の中にあるはずの文字が、文字列の外に出てしまっている。
なお PowerShell 7 以降(pwsh.exe)は BOM が無くても UTF-8 として読みます。手元の pwsh では通るのに、相手の机の powershell.exe では落ちる、という形で表に出ることが多いのはこのためです。
直し方: BOM付き UTF-8 で保存する
Python から書き出しているなら、エンコーディングを utf-8-sig にします。
path.write_text(script, encoding="utf-8-sig")
PowerShell 自身から書き出すなら、5.1 の utf8 は BOM付きなので、そのままで問題ありません。
Set-Content -Path .\your.ps1 -Value $text -Encoding utf8
逆に PowerShell 7 の -Encoding utf8 は BOM 無しが既定です。7 から 5.1 に渡すファイルを書くなら utf8BOM を明示します。
Set-Content -Path .\your.ps1 -Value $text -Encoding utf8BOM
エディタで直すなら、VS Code は右下の「UTF-8」を押して「エンコード付きで保存」から「UTF-8 with BOM」を選びます。
BOM が付いているかを確かめる
見た目では分かりません。先頭3バイトを読みます。
Format-Hex -Path .\your.ps1 -Count 3
EF BB BF で始まっていれば BOM 付きです。Python ならこうです。
print(open("your.ps1","rb").read(3) == b"\xef\xbb\xbf")
人に渡す前に構文だけ確認する
実行せずに構文だけ見られます。副作用が無いので、相手に渡す前の確認に使えます。
$errors = $null
[System.Management.Automation.Language.Parser]::ParseFile(
(Resolve-Path .\your.ps1), [ref]$null, [ref]$errors) | Out-Null
$errors
ここで何も出なければ、少なくとも読み込みの時点では壊れていません。文字化けしていれば、ここで「終端記号がありません」が出ます。
ついでに踏んだ、似たところ
文字化けとは別に、同じ日にもう1つ詰まりました。パスのバックスラッシュです。POSIX シェルを経由してコマンドを渡す場面(Git Bash や、シェルを挟む実行環境)では、C:\Users\name のバックスラッシュがエスケープとして食われて消えます。C:/Users/name とスラッシュで書くか、パス全体をシングルクォートで囲むと通ります。
決めたこと
人が実行する .ps1 に日本語を書くなら、BOM付き UTF-8 で保存する。そして書いたら、渡す前に ParseFile で構文を見る。この2つだけ守れば、この種の事故は起きません。日本語を1文字も書かないという選択もありますが、人に渡すスクリプトでメッセージが英語なのは、それはそれで事故のもとでした。

Claude Codeとは何か、実際に投げた依頼文と直し方から説明する
CSVの文字化けと列ずれが止まる場所をPythonのコードで具体的に潰す手順
OpenAI APIキー発行の手順と予算上限を実測の実費から決める方法