以下、2022-09-05時点でWindows11にデフォルトで入ってるPowerShell5.x系の話です。
以下公式ドキュメントより
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_character_encoding?view=powershell-7.2
UTF8はあるがBOMが無いとダメ。
UTF8と言えばBOMなしが大半の中、PowerShellはBOMあり縛り。
スクリプト言語つかってUTF8のテキストをシェル上でパイブで繋いでみたいな処理をWindows上でやるのは厳しそう。
--2022-09-05追記
コメントでいただきましたように、PowerShellをアップデートすると、UTF8noBOMがデフォルトになるようです。
以下のコマンドでインストールできます。
PS C:\Users\yugoy> winget install Microsoft.Powershell
見つかりました PowerShell [Microsoft.PowerShell]
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://github.com/PowerShell/PowerShell/releases/download/v7.2.6/PowerShell-7.2.6-win-x64.msi
██████████████████████████████ 102 MB / 102 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
2022-09-05時点では、 winget install Microsoft.Powershell
で7.2が落ちてきました。インストールが終わって、Windowsターミナルを起動すると、既存のPowerShellの5系と7系が共存する形になっております。アップグレードというよりも別系統のPowerShellが入ったようです(青いアイコンのWindows Powershellが5系、黒いアイコンのPowerShellが7系)。
別物で名前が微妙に違うのでややこしいですが、PowerShell7系の検証は別記事でご報告します。