PowerShellスクリプトコードに日本語が存在する場合にエラーが発生する場合の対応


はじめに

PowerShellスクリプトを書くツールとしてみなさんはどの様なツールをりようしていますでしょうか?

Windows付属のPowerShell IDEを使う人が多いかとは思いますが、中にはVisual Studio Code(VSCode) を利用してコードを書いている人もいるのではないでしょうか。

筆者はVSCodeを利用してPowerShellを書いているのですが、コード内に日本語を記載して実行した時、期待通りの動作をしませんでした。

PowerShellのファイル文字エンコード

Microsoftサイトで下記の様なサイトを見つけました

VS Code と PowerShell でのファイルのエンコードの概要

上記によると、

VS Code と PowerShell は両方とも、実用的な既定のエンコード構成でインストールされています。

ただし、PowerShell により使用される既定のエンコードは、PowerShell Core (v6.x) のリリースで変わりました。

VS Code で PowerShell または PowerShell 拡張機能を使用しても確実に問題がないようにするには、VS Code と PowerShell の設定を正しく構成する必要があります。

とのこと。

実際にVSCodeのDefault文字エンコードは UTF-8(BOMなし) です。
このまま作成し保存し、PowerShellを実行すると、BOM がなければデフォルトの文字コードで読もうとするため、デフォルトの文字コードは、Shift-JISのため文字化けしたk文字列を読み込もうとします

※ ただし、PowerShell 5.1までのバージョンとなります。6.0以降では異なります

 

これを回避するために、VSCodeではShift-JISでファイルを作成する様にするといいと思います。