PowerShell Out-File 在字符之间输出额外的空格

PowerShell Out-File outputs extra spaces in between characters

我正在使用一个简单的脚本在日志文件中输出当前目录的路径:

(Get-Item .).FullName | out-file "C:\windows\system32\rcwm\rc.log" -append

这在大多数情况下都有效。然而,看似随机的追加会导致在输出字符串中的每个字符后添加空格。我的 rc.log 文件将如下所示:

C:\Users\root\Desktop22
C : \ U s e r s \ r o o t \ D e s k t o p \ 2 2 2 2 

注意我两次输出相同的目录名,日志文件中的结果是不同的。

一旦发生这种情况,附加到日志文件中的每个后续字符串的字符之间都会有空格。

可能是什么问题?

一段时间后,我决定尝试更改 powershell 在我的日志文件中输出字符串的编码。

我仍然不明白 powershell 为什么或如何决定使用哪种编码,但最好 让 powershell 知道你想使用哪种编码:

(Get-Item .).FullName | out-file "C:\windows\system32\rcwm\rc.log" -append -Encoding UTF8

对我来说,UTF-8 似乎效果最好。

C:\Users\root\šč   (UTF8)
C:\Users\root\??   (ASCII)
C : \ U s e r s \ r o o t \ a   (UNICODE)
 C   :   \   U   s   e   r   s   \   r   o   o   t   \   a   (UTF32)
C:\Users\root\šč\ő\~2\üē (UTF8)

编辑: 从那以后,我遇到了“chcp”命令(更改代码页)。 UTF-8 的代码是 65001。 欲了解更多信息,您可以查看此 .