多忙って良くないですね。記事が滞ってますが、ネタだけは日々増えています。
簡単ですが、結構欲しがる人がいそうなので表題の記事を。
Windowsは、シェル (cmdやPowerShell)、あるいはUnicodeでないプログラムで使用する言語を設定しないと、文字化けを起こすことがあります。
これは、Language Packの状態や、Windows UIの言語は別箇の位置づけなので、
English Windowsの言語を日本語にLanguage Pack を当てたけど、PowerShell で日本語が化ける!
ということも起こります。この対応を紹介しましょう。
SystemLocale
Windowsのnon-Unicode時の言語設定はSystem Localeと呼ばれる設定になります。
System Localeが日本語ならnon-Unicodeプログラムで日本語が使え、 en-USなら日本語は正常に認識されません。
旧来の設定方法 (GUI)
PowerShellでサポートされるまで、マウスでポチポチが多かったです。 この場合は、コントロールパネルで設定が可能です。
コントロールパネル > 地域 > 管理タブ
Control Panel > Region > Administrator
と進むと、Unicode対応でないプログラムの言語対応 (Language for non-Unicode programs) という項目があります。


ここが、日本語(日本) あるいはJapanese (Japan) になっていないと、PowerShellやcmdで日本語が化けて正常に動作しません。
管理者権限があるユーザーで当該項目を開いて、日本語に設定するとWindowsの再起動を求められるので再起動すると切り替わります。
PowerShellで自動化する
PowerShellでやるのは、自動化したり、どこに設定があったっけ? って探さないためです。自動化がいらなくて、マウスで100台のマシンや複数台に毎度やることが耐えられる人はいらないでしょう。 そういう作業はプログラムに任せて、人間のやることじゃないと思っているのでPowerShellを使います。
手順は簡単です。この2行でおしまいです。
Set-WinSystemLocale ja-JP Restart-Computer
Step1. PowerShell を 管理者として実行

Step2. Get-WinSystemLocaleコマンドで現在のシステムロケールを確認
結果がja-JPでなければ、日本語ではないということです。
PS> Get-WinSystemLocale LCID Name DisplayName ---- ---- ----------- 1041 ja-JP Japanese (Japan)
Step3. Set-WinSystemLocaleでシステムロケールを日本語にする
実行しても何も出ないのが残念です。
PS> Set-WinSystemLocale ja-JP C:\Windows\system32> Set-WinSystemLocale ja-JP C:\Windows\system32>
Step4. 再起動して適用。
再起動しないと適用されません。自分の手元のPCならこれでいいでしょう。
Restart-Computer
もし、自動化する場合は、他のプログラムに再起動が阻害されないように-Forceにします。
Restart-Computer -Force
以上です。簡単ですね。
まとめ
自動化しないで何をするの。