【问题标题】:PowerShell 1 is not capturing batch file output with teePowerShell 1 未使用 tee 捕获批处理文件输出
【发布时间】:2009-09-19 07:38:11
【问题描述】:

PowerShell 可以调用命令行批处理文件。可以使用“tee”命令记录 PowerShell 脚本输出。但是 tee 命令不会在 PowerShell 1 中为我记录 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

现在用 tee 运行它:

 .\test.ps1 | tee pout.txt

这不记录批处理文件的输出 - 输出文件只包含

hello from PS

没想到

hello from PS
hello from bat

但是没有捕获到批处理输出。如何捕获此 PowerShell 脚本和从属批处理文件的输出?

【问题讨论】:

  • 我在最后的答案中添加了一些东西。你为什么制作这个社区维基?这不是不鼓励人们回答,因为他们不会得到积分吗?
  • 自从我上次访问此站点以来,我将其设为社区 wiki,人们要求这样做 - 关键是他们可以对其进行编辑。分差不是我所知道的,这些规则可能在此期间发生了变化。但这不是次要问题吗?这是我可以改变的吗?
  • 我真的不在乎;我只是好奇而已。我的理解是,社区 wiki 是针对没有黑白答案的“意见”问题,特别是对于诸如“你最喜欢的编程语言是什么”之类的问题,这些问题会产生荒谬的分数。顺便说一句,任何问题都可以由有足够分数的人编辑(我认为是 2000 年)。

标签: powershell powershell-1.0 tee


【解决方案1】:

编辑:

它似乎在 Powershell 2 中有效,但在 Powershell 1 中无效。

我找到了 Powershell 1 的解决方法。尝试将 test.ps1 更改为此

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

【讨论】:

  • 我已经为你的 cmets 更新了 - 在批处理文件中使用了“@”,明确表示这是 PowerShell 1
  • 该解决方法也适用于我。我们有赢家!所以这一定和写控制台和写输出的区别有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多