我正在创建一个 Powershell 脚本来运行一堆 scala 脚本(我有理由不使用构建工具)。我想以这种方式为所有这些编译生成输出:
- 只是文件中的编译错误
- 编译错误和标准输出合并在第二个文件中
- 标准输出和编译错误也转到标准输出
我试过tee,2>>,甚至戳-OutVariable和-ErrorVariable(后两者似乎只适用于原生 Powershell 命令?)。我怀疑tee和重定向是某种组合的正确方法,但经过大量搜索后,我似乎找不到合适的论坛。
这是我当前的主循环,它只是重定向错误:
foreach($script in $scripts) {
Write-Host scala $script
scala -nocompdaemon $script 2>> _testerrors.txt
}
第一行是让观看该过程的人可以看到正在发生的事情(似乎适当的发球/重定向/等会消除这种情况,作为副作用)。
感谢您的任何帮助/指点;我只是 Powershell 的一个普通用户。
更新:
更多的狩猎产生了以下结果:
foreach($script in $scripts) {
Write-Host scala $script
Write-Output "> scala $script" | Out-File ./_testoutput.txt -append
scala -nocompdaemon $script 2>&1 | tee -Variable testout
out-file ./_testoutput.txt -InputObject $testout -append
Write-Output "--------------------" | Out-File ./_testoutput.txt -append
}
事实证明,tee命令可以将文本发送到文件,但由于某些奇怪的原因,它无法附加到文件中。因此,您必须在变量中捕获输出,然后将变量附加到文件中。
虽然这个结果确实解决了我的一些问题,但它仍然没有生成只包含错误消息的文件。