我有一个特定的场景,我必须在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