使用编码从Invoke Expression进行Powershell日志记录



我有一个特定的场景,我必须在Powershell中使用Invoke Expression记录批处理文件,但我的日志是用"UCS-2 Little Endian"编码保存的,我想用UTF-8或任何其他编码保存它。

这是我尝试做的一个简单的例子:

批处理文件(test.bat):

echo Test

Powershell文件(test.ps1):

Invoke-Expression "c:test.bat > log.txt"

有没有办法更改log.txt的编码?

你可以试试这个:

C:test.bat | Out-File C:log.txt -Encoding UTF8

或者,无论出于何种原因,您都必须使用Invoke-Expression:

Invoke-Expression "C:test.bat" | Out-File C:log.txt -Encoding UTF8

请注意,这将每次覆盖log.txt。如果你想附加到文件,请执行以下操作:

Invoke-Expression "C:test.bat" | Out-File C:log.txt -Encoding UTF8 -append

Invoke-Expression "C:test.bat" | Add-Content C:log.txt -Encoding UTF8

最新更新