Powershell 为什么我的日志文件是用USC-2 Little-Endian编码创建的?

Powershell 为什么我的日志文件是用USC-2 Little-Endian编码创建的?,powershell,Powershell,我有一个Powershell命令,它运行一个可执行文件并将所有输出重定向到日志文件。它可以工作,日志包含正确的文本,但文件采用USC-2 Little-Endian格式,其他一些程序无法读取。当我使用批处理做同样的事情时,它会在UTF-8中创建日志。我可以切换到批处理作为一个选项,但我的路径是UNC,批处理打印了一系列关于这一点的警告。这就是为什么我尝试使用Powershell完成此任务的原因 以下是脚本: & .\rh.exe /connstring="Server=MYSERVER;

我有一个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作为所选编码

& .\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
更新:

我尝试了这个替代方案,现在我得到了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来确保所有输出都被重定向,而不仅仅是标准输出。我应该像这样将其添加到Out文件的末尾,还是Out文件捕获所有形式的输出

... | Out-File test.txt -Encoding utf8 *>&1

如帮助主题中所述,文件重定向使用Unicode编码。顺便说一句,为什么
>test.txt*>&1
而不是
*>test.txt
?@PetSerAl我在某处找到了一个带有*>&1语法的示例。我不知道*>。我试过了,效果也一样。我仍然在test.txt文件中使用USC-2小尾端编码。您必须在
输出文件之前使用
*>&1
..*>&1 | Out File test.txt-编码utf8
如帮助主题中所述,文件重定向使用Unicode编码。顺便说一句,为什么
>test.txt*>&1
而不是
*>test.txt
?@PetSerAl我在某处找到了一个带有*>&1语法的示例。我不知道*>。我试过了,效果也一样。我仍然在test.txt文件中使用USC-2小尾端编码。您必须在
输出文件之前使用
*>&1
..*>&1 | Out File test.txt-编码utf8