こんにちは。チェシャ男です。(-皿-)
先日発生した Compress-Archive コマンドレットによる文字化け事件。
[blogcard url=”https://cheshire-wara.com/powershell/ps-column/compress-archive-incident/”]事件は hotfix を適用することで無事解決しました。Windows 7 の PowerShell v5.0 ユーザは今回の記事を参考に早めに対処することをお勧めします。
もくじ
事件の真相は…
今回の文字化けの原因は Windows 7 / Windows Server2008 におけるバグとも言えるようです。
【Windows 7 または Windows Server2008 R2 では .zip ファイルの解凍後のファイル名が破損します】
Japanese characters in file names are displayed as garbled text after you decompress a .zip file in Windows 7 or in Windows Server 2008 R2-Microsoft/© 2017 Microsoft
ファイル名を Shift_JIS で扱い圧縮・解凍を行っていたことが原因らしい。。
この現象により Compress-Archive による文字化けだけでなく、UTF-8 を扱う他 OS (LinuxやMac)で圧縮されたファイルの解凍時にも破損が起きてしまうようです。
KB2704299 を取得する
このバグに対しては Microsoft で修正プログラムが提供されています。
先ほどの詳細ページ(上記リンク)に移動すると以下の画面が表示されます。
ここで[修正プログラムをダウンロード]をクリックすると、
使用条件が表示されます。
内容をよ~~く読んだら[同意する]をクリックして下さい。
すると、
このように環境に合わせて修正プログラムが表示されるはずです。
問題なければチェックマークをつけ、メールアドレスを入力して[リクエストを送信]しましょう!
送信完了画面に遷移するはずです。
後は送られてきたメールから修正プログラムをゲットしましょう。
KB2704299 を適用する
さて、修正プログラムをゲットしたら次は適用です。
メールのリンクから、
448094_intl_i386_zip.exe
という怪しげなファイルをダウンロードしてきました。
※ファイル名は環境によって若干異なるかもしれません。
実行ファイルをクリックするとパッケージされたファイルの解凍が始まります。
[Continue]をクリックします。
修正プログラムが解凍される場所を選択 or 入力して[OK]をクリックしましょう。
そして見守る。
成功!ということで[Ok]をクリックします。
すると、先ほど設定した解凍先に
Windows6.1-KB2704299-v2-x86.msu
のようなファイル名の更新プログラムファイルがあると思います。
ファイルを実行して、いざ適用してみましょう!
更新プログラムの探索を待ちます。
インストールしますかと問われたら迷わず[はい(Y)]をクリック!
インストーが完了すると再起動を促されるので再起動をしましょう。
再起動が完了すると無事文字化け問題は解消されているはずです。
文字化けの解消を確認
修正プログラムが正常に適用されたかどうか確認してみましょう。
PS C:\work> #適用済KBの確認 PS C:\work> Get-WmiObject Win32_QuickFixEngineering Source Description HotFixID InstalledBy InstalledOn ----------- ----------- -------- ----------- ----------- CHESHIRE-PC Update KB2849697 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2849696 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2841134 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2841134 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2670838 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB3134760 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2533623 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Hotfix KB2534111 2013/12/16 0:00:00 CHESHIRE-PC Hotfix KB2639308 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Hotfix KB2704299 CHESHIRE-PC\Hoge 2017/01/17 0:00:00 CHESHIRE-PC Update KB2729094 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2731771 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2786081 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2834140 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB2888049 CHESHIRE-PC\Hoge 2016/07/01 0:00:00 CHESHIRE-PC Update KB958488 CHESHIRE-PC\Hoge 2013/12/17 0:00:00 CHESHIRE-PC Update KB976902 CHESHIRE-PC\Hoge 2010/11/20 0:00:00 PS C:\work> Get-WmiObject Win32_QuickFixEngineering | Where-Object {$_.HotFixID -eq "KB2704299"} Source Description HotFixID InstalledBy InstalledOn ----------- ----------- -------- ----------- ----------- CHESHIRE-PC Hotfix KB2704299 CHESHIRE-PC\Hoge 2017/01/17 0:00:00
きちんと適用されていることが確認出来ましたね。
実際にエクスプローラから問題のZIPファイルを展開してみてみると、
【修正プログラム適用前】
【修正プログラム適用後】
日本語が正常に表示されていることがわかります。これで問題なく Compress-Archive が使用できるようになりました。
[blogcard url=”https://cheshire-wara.com/powershell/ps-cmdlets/item-file/compress-archive/”]ちなみに Windows 8 以降なら今回の文字化け問題は解消されている(らしい)ので安心してください。
以上、「KB2704299」による Compress-Archive の文字化け対処方法をお届けしました。