使用 Windows PowerShell 中的 Node,我可以生成二进制输出到标准输出吗?

Using Node from Windows PowerShell, can I generate binary output to stdout?

运行 Node.js 来自 Windows 上的 PowerShell 假定标准输出必须是 UTF-16 文本流。对于将二进制 Buffer 对象发送到 stdout 的工具,这会产生令人惊讶的结果。有没有办法解决这个问题?

命令行示例:

node -e "process.stdout.write(new Buffer('abc'))" >tmp.dat

P.S。我最初认为这是一个 node.js 问题,但现在很清楚这是一个 PowerShell 问题。

对此的最佳答案似乎是生成 cmd.exe 并使用它进行本机重定向,而不是依赖于 PowerShell 的重定向模型。这有点奇怪,因为它需要将重定向放在引号中,如下所示:

cmd /c node -e "process.stdout.write(new Buffer('abc'))" '>tmp.dat'

由于 "node" 是本机命令,因此 PowerShell 无法识别这一点真的太糟糕了,任何重定向都应使用本机重定向机制来处理。