Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell 1未使用tee捕获批处理文件输出_Powershell_Powershell 1.0_Tee - Fatal编程技术网

PowerShell 1未使用tee捕获批处理文件输出

PowerShell 1未使用tee捕获批处理文件输出,powershell,powershell-1.0,tee,Powershell,Powershell 1.0,Tee,PowerShell可以调用命令行批处理文件。可以使用“tee”命令记录PowerShell脚本输出。但是tee命令不会在PowerShell 1中为我记录PowerShell脚本中批处理文件的输出 尝试以下简化示例: 制作一个名为test.bat的批处理文件,其中包含内容 @echo hello from bat 从PowerShell运行它: PS C:\> .\test.bat | tee out.txt 这是可行的-您将拥有一个输出文件,其中包含 hello from bat

PowerShell可以调用命令行批处理文件。可以使用“tee”命令记录PowerShell脚本输出。但是tee命令不会在PowerShell 1中为我记录PowerShell脚本中批处理文件的输出

尝试以下简化示例:

制作一个名为test.bat的批处理文件,其中包含内容

@echo hello from bat
从PowerShell运行它:

PS C:\> .\test.bat | tee out.txt
这是可行的-您将拥有一个输出文件,其中包含

hello from bat
write-output "hello from PS"
.\test.bat
现在制作一个名为test.ps1的PowerShell脚本,该脚本包装批处理文件,其中包含

hello from bat
write-output "hello from PS"
.\test.bat
现在用一个发球台跑这个球:

 .\test.ps1 | tee pout.txt
这不会记录批处理文件的输出-输出文件仅包含

hello from PS
正如我所料

hello from PS
hello from bat
但没有捕获批处理输出。如何捕获此PowerShell脚本和下级批处理文件的输出?

编辑:

它似乎在Powershell 2中工作,但在Powershell 1中不工作

不过,我找到了一份Powershell 1的工作。尝试将test.ps1更改为此

write-output "hello from PS"
.\test.bat | write-output

我已经更新了您的评论-在批处理文件中使用“@”,明确表示这是PowerShell 1解决方案,对我也适用。我们赢了!所以这一定与写控制台和写输出之间的区别有关。我在最后的回答中添加了一些东西。你为什么做这个社区维基?这难道不妨碍人们回答问题,因为他们得不到分数吗?自从我上一次访问这个网站以来,我就把它变成了一个社区维基,人们要求这样做——重点是他们可以编辑它。我并不了解分数的差异,这些规则可能在这期间已经改变了。这不是次要的问题吗?这是我可以改变的吗?我真的不在乎它;我只是好奇。我的理解是,社区维基是针对没有黑白答案的“意见”问题,特别是“你最喜欢的编程语言是什么”之类的问题,这些问题会产生大量的分数。顺便说一句,任何问题都可以由得分足够的人编辑(我想是2000分)。