ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

Ansible PowerShellコマンドの実行結果の日本語が文字化けする

Ansible PowerShellコマンドの実行結果の日本語が文字化けするという事象がありました。実行結果が分からないのでちょっと困ったということで調べてみましたが、以下の情報がありました。

 

PowerShell - Ansibleからターゲットノードにファイルを出力するコマンドを実行させると文字化けする|teratail

 

以下は質問の抜粋です。

 

WindowsPowershell のコンソール画面で

w32tm /query /status > C:\Users\hogehoge\Desktop\test.txt

のコマンドを実行すると、デスクトップにあるtest.txtに時刻同期の情報が書き出されます。
しかし、Ansible からターゲットノードに対して全く同じコマンドを実行させると、文字化けした状態でファイルに書き出されます。
どうすれば文字化けしない状態で書き出すことができるでしょうか。
以下、Ansible で実際に実行したタスクです。


- name:
  win_file:
    path: C:\Users\hogehoge\Desktop\test.txt
    state: touch

- name:
  win_shell: w32tm /query /status > C:\Users\hogehoge\Desktop\test.txt

 

私も同様にPowerShellで文字化けされました。

 

 

回答にある参考になるURLです。

WindowsのCP932に苦闘している件

 

スライド式なので、こちらも参考になります。

AnsibleNight20180426にいってきた - smallpalace's blog

 

AtomようのAnsibleぷらぐいんつくったのでつかってね

raw,script,自作モジュールで何とかしていたころには戻れないほど便利になったが CP932をうまくあつかえない(いわゆるSHIFT-JISのこと win_commandからifconfigをたたくと、、文字化け。 PowerShellのセッションがUTF8に固定されてるがWinの古いコマンドだとunicode対応してないとかだと化ける rawつかうと出力が英語でかえってくる locale情報のとりあつかいに差がある?日本語でしか返ってこないコマンドだとだめ

win_shellをつかってnkfかます chocolateyリポジトリからwin_chocolateyモジュール一発でインストールできる

カスタムWIN_COMMANDモジュールを作る Powershellのファイル読み込み関数get-contentではエンコード指定できるのでそれつかう

 

色々と工夫をしてみましたが、難しかったです。私の場合は、コマンドを変えることで解決しましたが、このあたり、文字コードが変換できるとか、改善されるといいですね。

 

Python 実践 データ加工/可視化 100本ノック