我需要从C ++应用程序运行powershell命令。此powershell命令需要使用UFT16编码将powershell脚本输出重定向到文件。
我运行以下命令,但out.txt不在UFT16中,但似乎是UTF8。
powershell.exe -File myps.ps1 > out.txt
我也尝试了以下内容。但错误是“'out-file'不被识别为内部或外部命令可操作程序或批处理文件。”
powershell.exe -File myps.ps1 | out-file "enctest.txt" -encoding unicode
也许应该使用-Command
?怎么做?
答案 0 :(得分:1)
正如您所知,Out-File
是一个PowerShell cmdlet,因此在流程参数的上下文中没有意义(如果您尝试启动powershell.exe
为直接新进程),cmd.exe
(调用system()
调用时的默认shell)也没有意义。
也许应该使用" -Command"?怎么做?
绝对!
这样的事情应该做:
powershell.exe -Command "& C:\path\to\my.ps1 | Out-File enctest.txt -Encoding unicode"
>
运算符也适用于-Command
,因为输出重定向编码默认为UTF16LE(至少在 PowerShell内部):
powershell.exe -Command "& C:\path\to\my.ps1 > enctest.txt"