Powershell将程序的输出写入控制台实时并通过管道传输到文件

时间:2016-07-15 09:19:07

标签: powershell pipeline

我从powershell脚本运行一个相当复杂的python脚本。我想在控制台中实时显示.python脚本的stdout和stderr流(即.py脚本写入它们)并将它们写入文件。

我目前的解决方案如下:

Do-PreliminaryStuff
log = & ".\myPyScript.py" -myArgument "\this\that\thingy.txt" 2>&1 $log
Write-Output $log
$log | Out-File "$logDir\pyScriptLog.log"
Do-RestOfScript

这个问题是文本只在.py脚本完成后打印出来,这使得查看.py脚本的进度变得更加困难。

有没有办法以某种方式...示例..作为对象的管道通过它?

2 个答案:

答案 0 :(得分:0)

您可能正在寻找Tee-Object cmdlet。

答案 1 :(得分:0)

使用Tee-Object - 它会在继续之前将管道拆分为文件流:

& ".\myPyScript.py" -myArgument "\this\that\thingy.txt" 2>&1 |Tee-Object -FilePath $log