(この記事では、Windows PowerShell(5.1 以前: powershell.exe)を PowerShell と書きます。PowerShell Core(6.0 以降: pwsh.exe)とは異なるので注意。)
PowerShell スクリプトを UTF-8 で書いて PowerShell で動かそうと思ったら動かなかった。調べてみたら、VSCode と PowerShell でのファイルのエンコードの概要というページが参考になった。
PowerShell には文字コードの自動判別機能がない。また、実行時に文字コードを指定することもできない。ファイルに BOM(byte order mark: バイト順記号)があれば文字コードがわかるけれど、BOM がなければデフォルトの文字コードで読もうとする。デフォルトの文字コードは、日本語ロケールでは Shift-JIS。なので、BOM なし UTF-8 で書かれたファイルは読めない。
したがって、PowerShell が読める日本語のファイルは Shift-JIS か BOM 付きユニコードということになる。
ということは、メモ帳で書き出せる文字コードなら PowerShell が読める。メモ帳での表記は「ANSI」「Unicode」「Unicode big endian」「UTF-8」となっているけれど、実際にはそれぞれ Shift-JIS、UTF-16(リトルエンディアン)、UTF-16(ビッグエンディアン)、BOM 付き UTF-8。そのいずれかでスクリプトを書けば、PowerShell で実行できる。