SATO Yusuke
SATO Yusuke

Reputation: 2224

Start-Transcript always inserts a NULL character (0x00) after every Japanese character

Background

I am using Start-Transcript/Stop-Transcript cmdlet to save the messages of commands launched from my PowerShell script.

Problem

I ran commands that contain Japanese characters in messages like this:

PS C:\tmp> Start-Transcript -Path 'C:\tmp\Start-Transcript.txt'
トランスクリプトが開始されました。出力ファイル: C:\tmp\Start-Transcript.txt
PS C:\tmp> pktmon etl2txt C:\tmp\ETW\pktmon_curl_http_capture.etl
処理しています...

書式設定されたイベント:    1496
書式設定されたファイル:    C:\tmp\ETW\pktmon_curl_http_capture.txt
PS C:\tmp> Stop-Transcript
トランスクリプトが停止されました。出力ファイル: C:\tmp\Start-Transcript.txt
PS C:\tmp>

The byte-by-byte representation is like this.

PS C:\tmp> pktmon etl2txt C:\tmp\ETW\pktmon_curl_http_capture.etl | Format-Hex -Raw -Encoding UTF8


           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   E8 9C 83 EF BD A6 E9 80 85 E3 83 BB EF BC A0 E7  èヲéã»ï¼ ç
00000010   B8 BA EF BD A6 E7 B8 BA E3 83 BB E2 88 AA E7 B8  ¸ºï½¦ç¸ºã»âªç¸
00000020   BA E3 83 BB 2E 2E                                ºã»..


           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   E8 AD 96 EF BD B8 E8 A0 91 E5 89 B0 EF BD A8 EF  è­ï½¸è å°ï½¨ï
00000010   BD AD E8 9E B3 E5 A3 B9 EF BC 86 E7 B9 A7 E5 BE  ½­è³å£¹ï¼ç¹§å¾
00000020   8C E2 97 86 E7 B9 A7 EF BD A4 E7 B9 9D E5 90 B6  â繧、ç¹å¶
00000030   CE A6 E7 B9 9D E3 83 BB 20 20 20 20 31 34 39 36  Φç¹ã»    1496



           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   E8 AD 96 EF BD B8 E8 A0 91 E5 89 B0 EF BD A8 EF  è­ï½¸è å°ï½¨ï
00000010   BD AD E8 9E B3 E5 A3 B9 EF BC 86 E7 B9 A7 E5 BE  ½­è³å£¹ï¼ç¹§å¾
00000020   8C E2 97 86 E7 B9 9D E8 BC 94 E3 81 83 E7 B9 A7  âç¹è¼ã繧
00000030   EF BD A4 E7 B9 9D EF BD AB 3A 20 20 20 20 43 3A  、ç¹ï½«:    C:
00000040   5C 74 6D 70 5C 45 54 57 5C 70 6B 74 6D 6F 6E 5F  \tmp\ETW\pktmon_
00000050   63 75 72 6C 5F 68 74 74 70 5F 63 61 70 74 75 72  curl_http_captur
00000060   65 2E 74 78 74                                   e.txt


PS C:\tmp>

But in the result of Start-Transcript, NULL characters (0x00) are inserted after every Japanese character like this:

**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20250215200936
ユーザー名: K690XN-M2S5-KK\satob
RunAs ユーザー: K690XN-M2S5-KK\satob
構成名: 
コンピューター: K690XN-M2S5-KK (Microsoft Windows NT 10.0.26100.0)
ホスト アプリケーション: C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
プロセス ID: 13472
PSVersion: 5.1.26100.2161
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.26100.2161
BuildVersion: 10.0.26100.2161
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
トランスクリプトが開始されました。出力ファイル: C:\tmp\Start-Transcript.txt
PS C:\tmp> pktmon etl2txt C:\tmp\ETW\pktmon_curl_http_capture.etl
処 理 し て い ま す ...

書 式 設 定 さ れ た イ ベ ン ト :    1496
書 式 設 定 さ れ た フ ァ イ ル :    C:\tmp\ETW\pktmon_curl_http_capture.txt
PS C:\tmp> Stop-Transcript
**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20250215200936
**********************

The byte-by-byte representation is like this. The message 処 理 し て い ま す ... starts from 0000034C. Every Japanese characters have trailing NULL like 0000034F.

PS C:\tmp> Format-Hex .\Start-Transcript.txt


           Path: C:\tmp\Start-Transcript.txt

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   EF BB BF 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  *************
00000010   2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 0A 57 69 6E 64 6F  *********..Windo
00000020   77 73 20 50 6F 77 65 72 53 68 65 6C 6C 20 E3 83  ws PowerShell ã
00000030   88 E3 83 A9 E3 83 B3 E3 82 B9 E3 82 AF E3 83 AA  ã©ã³ã¹ã¯ãª
00000040   E3 83 97 E3 83 88 E9 96 8B E5 A7 8B 0D 0A E9 96  ããéå§..é
00000050   8B E5 A7 8B E6 99 82 E5 88 BB 3A 20 32 30 32 35  å§æå»: 2025
00000060   30 32 31 35 32 30 30 39 33 36 0D 0A E3 83 A6 E3  0215200936..ã¦ã
00000070   83 BC E3 82 B6 E3 83 BC E5 90 8D 3A 20 4B 36 39  ¼ã¶ã¼å: K69
00000080   30 58 4E 2D 4D 32 53 35 2D 4B 4B 5C 73 61 74 6F  0XN-M2S5-KK\sato
00000090   62 0D 0A 52 75 6E 41 73 20 E3 83 A6 E3 83 BC E3  b..RunAs ã¦ã¼ã
000000A0   82 B6 E3 83 BC 3A 20 4B 36 39 30 58 4E 2D 4D 32  ¶ã¼: K690XN-M2
000000B0   53 35 2D 4B 4B 5C 73 61 74 6F 62 0D 0A E6 A7 8B  S5-KK\satob..æ§
000000C0   E6 88 90 E5 90 8D 3A 20 0D 0A E3 82 B3 E3 83 B3  æå: ..ã³ã³
000000D0   E3 83 94 E3 83 A5 E3 83 BC E3 82 BF E3 83 BC 3A  ãã¥ã¼ã¿ã¼:
000000E0   20 4B 36 39 30 58 4E 2D 4D 32 53 35 2D 4B 4B 20   K690XN-M2S5-KK
000000F0   28 4D 69 63 72 6F 73 6F 66 74 20 57 69 6E 64 6F  (Microsoft Windo
00000100   77 73 20 4E 54 20 31 30 2E 30 2E 32 36 31 30 30  ws NT 10.0.26100
00000110   2E 30 29 0D 0A E3 83 9B E3 82 B9 E3 83 88 20 E3  .0)..ãã¹ã ã
00000120   82 A2 E3 83 97 E3 83 AA E3 82 B1 E3 83 BC E3 82  ¢ããªã±ã¼ã
00000130   B7 E3 83 A7 E3 83 B3 3A 20 43 3A 5C 57 49 4E 44  ·ã§ã³: C:\WIND
00000140   4F 57 53 5C 53 79 73 74 65 6D 33 32 5C 57 69 6E  OWS\System32\Win
00000150   64 6F 77 73 50 6F 77 65 72 53 68 65 6C 6C 5C 76  dowsPowerShell\v
00000160   31 2E 30 5C 70 6F 77 65 72 73 68 65 6C 6C 2E 65  1.0\powershell.e
00000170   78 65 0D 0A E3 83 97 E3 83 AD E3 82 BB E3 82 B9  xe..ãã­ã»ã¹
00000180   20 49 44 3A 20 31 33 34 37 32 0D 0A 50 53 56 65   ID: 13472..PSVe
00000190   72 73 69 6F 6E 3A 20 35 2E 31 2E 32 36 31 30 30  rsion: 5.1.26100
000001A0   2E 32 31 36 31 0D 0A 50 53 45 64 69 74 69 6F 6E  .2161..PSEdition
000001B0   3A 20 44 65 73 6B 74 6F 70 0D 0A 50 53 43 6F 6D  : Desktop..PSCom
000001C0   70 61 74 69 62 6C 65 56 65 72 73 69 6F 6E 73 3A  patibleVersions:
000001D0   20 31 2E 30 2C 20 32 2E 30 2C 20 33 2E 30 2C 20   1.0, 2.0, 3.0,
000001E0   34 2E 30 2C 20 35 2E 30 2C 20 35 2E 31 2E 32 36  4.0, 5.0, 5.1.26
000001F0   31 30 30 2E 32 31 36 31 0D 0A 42 75 69 6C 64 56  100.2161..BuildV
00000200   65 72 73 69 6F 6E 3A 20 31 30 2E 30 2E 32 36 31  ersion: 10.0.261
00000210   30 30 2E 32 31 36 31 0D 0A 43 4C 52 56 65 72 73  00.2161..CLRVers
00000220   69 6F 6E 3A 20 34 2E 30 2E 33 30 33 31 39 2E 34  ion: 4.0.30319.4
00000230   32 30 30 30 0D 0A 57 53 4D 61 6E 53 74 61 63 6B  2000..WSManStack
00000240   56 65 72 73 69 6F 6E 3A 20 33 2E 30 0D 0A 50 53  Version: 3.0..PS
00000250   52 65 6D 6F 74 69 6E 67 50 72 6F 74 6F 63 6F 6C  RemotingProtocol
00000260   56 65 72 73 69 6F 6E 3A 20 32 2E 33 0D 0A 53 65  Version: 2.3..Se
00000270   72 69 61 6C 69 7A 61 74 69 6F 6E 56 65 72 73 69  rializationVersi
00000280   6F 6E 3A 20 31 2E 31 2E 30 2E 31 0D 0A 2A 2A 2A  on: 1.1.0.1..***
00000290   2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  ****************
000002A0   2A 2A 2A 0D 0A E3 83 88 E3 83 A9 E3 83 B3 E3 82  ***..ãã©ã³ã
000002B0   B9 E3 82 AF E3 83 AA E3 83 97 E3 83 88 E3 81 8C  ¹ã¯ãªããã
000002C0   E9 96 8B E5 A7 8B E3 81 95 E3 82 8C E3 81 BE E3  éå§ããã¾ã
000002D0   81 97 E3 81 9F E3 80 82 E5 87 BA E5 8A 9B E3 83  ããåºåã
000002E0   95 E3 82 A1 E3 82 A4 E3 83 AB 3A 20 43 3A 5C 74  ã¡ã¤ã«: C:\t
000002F0   6D 70 5C 53 74 61 72 74 2D 54 72 61 6E 73 63 72  mp\Start-Transcr
00000300   69 70 74 2E 74 78 74 0D 0A 50 53 20 43 3A 5C 74  ipt.txt..PS C:\t
00000310   6D 70 3E 20 70 6B 74 6D 6F 6E 20 65 74 6C 32 74  mp> pktmon etl2t
00000320   78 74 20 43 3A 5C 74 6D 70 5C 45 54 57 5C 70 6B  xt C:\tmp\ETW\pk
00000330   74 6D 6F 6E 5F 63 75 72 6C 5F 68 74 74 70 5F 63  tmon_curl_http_c
00000340   61 70 74 75 72 65 2E 65 74 6C 0D 0A E5 87 A6 00  apture.etl..å¦.
00000350   E7 90 86 00 E3 81 97 00 E3 81 A6 00 E3 81 84 00  ç.ã.ã¦.ã.
00000360   E3 81 BE 00 E3 81 99 00 2E 2E 2E 0D 0A 0D 0A E6  ã¾.ã........æ
00000370   9B B8 00 E5 BC 8F 00 E8 A8 AD 00 E5 AE 9A 00 E3  ¸.å¼.設.å®.ã
00000380   81 95 00 E3 82 8C 00 E3 81 9F 00 E3 82 A4 00 E3  .ã.ã.ã¤.ã
00000390   83 99 00 E3 83 B3 00 E3 83 88 00 3A 20 20 20 20  .ã³.ã.:
000003A0   31 34 39 36 0D 0A E6 9B B8 00 E5 BC 8F 00 E8 A8  1496..æ¸.å¼.è¨
000003B0   AD 00 E5 AE 9A 00 E3 81 95 00 E3 82 8C 00 E3 81  ­.å®.ã.ã.ã
000003C0   9F 00 E3 83 95 00 E3 82 A1 00 E3 82 A4 00 E3 83  .ã.ã¡.ã¤.ã
000003D0   AB 00 3A 20 20 20 20 43 3A 5C 74 6D 70 5C 45 54  «.:    C:\tmp\ET
000003E0   57 5C 70 6B 74 6D 6F 6E 5F 63 75 72 6C 5F 68 74  W\pktmon_curl_ht
000003F0   74 70 5F 63 61 70 74 75 72 65 2E 74 78 74 0D 0A  tp_capture.txt..
00000400   50 53 20 43 3A 5C 74 6D 70 3E 20 53 74 6F 70 2D  PS C:\tmp> Stop-
00000410   54 72 61 6E 73 63 72 69 70 74 0D 0A 2A 2A 2A 2A  Transcript..****
00000420   2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  ****************
00000430   2A 2A 0D 0A 57 69 6E 64 6F 77 73 20 50 6F 77 65  **..Windows Powe
00000440   72 53 68 65 6C 6C 20 E3 83 88 E3 83 A9 E3 83 B3  rShell ãã©ã³
00000450   E3 82 B9 E3 82 AF E3 83 AA E3 83 97 E3 83 88 E7  ã¹ã¯ãªããç
00000460   B5 82 E4 BA 86 0D 0A E7 B5 82 E4 BA 86 E6 99 82  µäº..çµäºæ
00000470   E5 88 BB 3A 20 32 30 32 35 30 32 31 35 32 30 30  å»: 20250215200
00000480   39 33 36 0D 0A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  936..***********
00000490   2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 0A           ***********..

Open the result in notepad.exe Open the result in binary editor

Question

Is there any way to stop Start-Transcript from inserting a NULL character (0x00) after Japanese characters?

Upvotes: 2

Views: 43

Answers (0)

Related Questions