地味に困って、解決方法を見つけたのでメモ
powershellでStart-Transcriptして、サーバの構成情報を吐き出してくツールつくった
Start-Transcript -Path
ipconfig
...
#他にも色々な構成情報をファイルに出力
コマンドごとにログファイルへのリダイレクト(>)を書くのが汚く見えて嫌いなので、こういう造りにしてる。
しかし、DOSコマンドを呼び出すと、日本語部分で、トランスクリプトに1バイトごとに特殊文字?が入る
ex. ipconfig結果、tasklistのヘッダー、「コマンドは、正しく完了しました」の文言など
sakuraでの見え方。日本語部分の前の行に全角空白が1バイトおきにはいり、日本語部分は1バイトごとに半角空白が入ってるように見える
上記はtypeperfコマンドの出力で、日本語部分は最後のちょろっとした部分なので無視でもいいんだけど、ipconfigとか日本語がたくさん出力されるコマンド結果だとかなり悲惨。
標準出力は普通なのに、ファイルに落とすとなぜかこうなる。
コマンド結果をいちいちファイルにリダイレクトしてあげれば回避できるんだけど、できればトランスクリプト使いたい。
で、解消方法は、コマンドのあとにパイプでOut-Default
を渡すこと
Start-Transcript -Path
ipconfig | Out-Default
...
インターネットで調べても同じ事例は見つからなかったけど、別の事例で紹介されてたOut-Defaultを試してみたら直った。
PowerShellのStart-TranscriptでDOSコマンドの実行結果が保存されない時の対処法