system.runでWindowsの情報取得した際の文字化け対応方法について

一例ですが、Windowsの「net accouts」の結果をZabbixで取得する為に以下の実装をしております。
system.run["net accounts > C:\zabbix\log\net_accounts.log",nowait]
vfs.file.contents["C:\zabbix\log\net_accounts.log",ISO-2022-JP]
vfs.file.time["C:\zabbix\log\net_accounts.log"]

単純に
system.run["net accounts"]
の実行結果を取得すると、Windows:SJIS、Zabbix:UTF8の文字コード違いで文字化けが発生してしまいます。
もっとスマートに文字化け対策をする方法があれば情報提供頂けないでしょうか。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー heya の写真

ISO-2022-JP ではなく SHIFT_JIS か CP932 にすればいいんじゃないでしょうか。

※追記
よく見ると質問を取り違えていたようです。上のやり方だとできている、ということなんですね。

ユーザー TNK の写真

Windowsのcmd.exeが入出力を勝手に書き換えてしまうので、直接的
にパイプで値を渡して文字コード変換を行っても、正常にUTF-8で
文字列を受け取ることができません。

結局、現在実装されているようにファイルを介して値を取得するの
が単純で確実な方法になると思います。

ユーザー ikemo の写真

そうですかー。きっとみなさんお困りなんですね。
ありがとうございました。

日本語で取得するから文字化けすると思われ、乱暴ですが

 system.run[chcp 437 & net accounts]

とすれば良いのではないでしょうか。

さらに | (パイプ) と find(str) コマンドなどを使って必要な行だけにすれば
トリガー設定もしやすいかも知れません。

ユーザー TNK の写真

日本語で取得するから文字化けすると思われ、乱暴ですが

 system.run[chcp 437 & net accounts]

とすれば良いのではないでしょうか。

残念ながらできません。

英語のコードページを指定すればASCIIだから大丈夫だと思われた
のかもしれませんが、上にも書いた通り、Windowsのcmd.exeが入出
力を勝手に書き換えてしまうせいか、文字化けした値が取得されま
す。

ユーザー ikemo の写真

CHCPで変換すればWindowsServer2012R2では問題なくなりますが、Windows7だと文字化けしてしまいますね。