我有一个运行可执行文件的Powershell命令,并将所有输出重定向到日志文件。它工作正常,日志包含正确的文本,但该文件采用USC-2 Little Endian格式,其他程序无法读取。当我使用批处理执行相同的操作时,它会以UTF-8创建日志。我可以切换到批处理作为选项,但我的路径是UNC,批处理打印了一堆警告。这就是为什么我尝试使用Powershell来完成这项任务的原因。
这是脚本:
& .\rh.exe /connstring="Server=MYSERVER;Database=DB1;UID=U1;PWD=***" `
/files=Folder1 `
/versionfile=Version.xml `
/vx=version `
/repo=Repo1 `
> test.txt *>&1
当我用Notepad ++打开test.txt并单击编码菜单时,它会显示USC-2 Little Endian作为选定的编码。
更新
我尝试了这种替代方案,现在我获得了UTF-8编码。
& .\rh.exe /connstring="Server=MYSERVER;Database=DB1;UID=U1;PWD=***" `
/files=Folder1 `
/versionfile=Version.xml `
/vx=version `
/repo=Repo1 `
| Out-File test.txt -Encoding utf8
这提出了另一个问题。我使用*>& 1来确保所有输出都被重定向,而不仅仅是STDOUT。我应该像这样将其添加到Out-File的末尾,还是Out-File捕获所有形式的输出?:
... | Out-File test.txt -Encoding utf8 *>&1