LoginSignup
0
1

More than 1 year has passed since last update.

[powershell] トランスクリプトにNULが出力されないようにする

Last updated at Posted at 2022-07-20

地味に困って、解決方法を見つけたのでメモ

powershellでStart-Transcriptして、サーバの構成情報を吐き出してくツールつくった

Start-Transcript -Path
ipconfig
...
#他にも色々な構成情報をファイルに出力

コマンドごとにログファイルへのリダイレクト(>)を書くのが汚く見えて嫌いなので、こういう造りにしてる。

しかし、DOSコマンドを呼び出すと、日本語部分で、トランスクリプトに1バイトごとに特殊文字?が入る
ex. ipconfig結果、tasklistのヘッダー、「コマンドは、正しく完了しました」の文言など

VSCODEでの見え方。1バイトごとにNULが入ってる
image.png

sakuraでの見え方。日本語部分の前の行に全角空白が1バイトおきにはいり、日本語部分は1バイトごとに半角空白が入ってるように見える
image.png

上記はtypeperfコマンドの出力で、日本語部分は最後のちょろっとした部分なので無視でもいいんだけど、ipconfigとか日本語がたくさん出力されるコマンド結果だとかなり悲惨。

標準出力は普通なのに、ファイルに落とすとなぜかこうなる。

コマンド結果をいちいちファイルにリダイレクトしてあげれば回避できるんだけど、できればトランスクリプト使いたい。
で、解消方法は、コマンドのあとにパイプでOut-Defaultを渡すこと

Start-Transcript -Path
ipconfig | Out-Default
...

インターネットで調べても同じ事例は見つからなかったけど、別の事例で紹介されてたOut-Defaultを試してみたら直った。
PowerShellのStart-TranscriptでDOSコマンドの実行結果が保存されない時の対処法

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1