PowerShell可以调用命令行批处理文件。可以使用“tee”命令记录PowerShell脚本输出。但是,在PowerShell 1中,tee命令不会为PowerShell脚本记录批处理文件的输出。
尝试这个缩减的例子:
制作名为 test.bat 的批处理文件,内容为
@echo hello from bat
从PowerShell运行它:
PS C:\> .\test.bat | tee out.txt
这样可行 - 您将拥有一个包含
的输出文件hello from bat
现在制作一个名为 test.ps1 的PowerShell脚本,它包装批处理文件,包含
write-output "hello from PS"
.\test.bat
现在用发球台运行:
.\test.ps1 | tee pout.txt
这不记录批处理文件的输出 - 输出文件仅包含
hello from PS
我期待
hello from PS
hello from bat
但是没有捕获批量输出。如何捕获此PowerShell脚本的输出和从属批处理文件?
答案 0 :(得分:5)
修改强>
它似乎在Powershell 2中有效,但在Powershell 1中没有。
我找到了Powershell 1的解决方法。尝试将test.ps1更改为此
write-output "hello from PS"
.\test.bat | write-output