2016-09-23 67 views
0

是否有一种机制可以将控制台缓冲区高度设置得非常高,以便可以将大量数据回显到控制台进行审阅,但不知何故将滚动距离限制为实际回显的值,而不是整个缓冲区大小?当输出可能在几十到几百行的任意位置,以将缓冲区设置为500或者1000时,并且当输出实际上非常小时有大量的空白滚动区域,这有点荒谬。在我看来,滚动应该只是实际存在的内容,而不是完整的缓冲区,这实际上是控制台如何实现的问题。可能真正的答案是我应该推出自己的基于表单的“控制台”。但仍然希望我只是缺少可以由脚本管理的控制台设置。Powershell缓冲区和滚动距离

+0

你有没有考虑输出重定向到一个文件,说,'三通Object'呢? – vonPryz

+0

我已经输出到一个文件供以后参考,但我自动化的过程可能需要数小时的软件安装和管理任务(Autodesk软件需要FOREVER来安装),而且我想要在屏幕日志上实时显示,以便人们可以看到在这个过程中,机器会立即发出通知,查看错误等等。然后,如果需要,他们还可以在稍后查看文件日志以供查看。 – Gordon

回答

0

不,不完全一样。屏幕缓冲区在您调整大小时分配。很明显,您可以将结果保存到文件中,然后在知道它有多长时间后调整缓冲区大小,并将文件内容作为最后一步发送到输出。

或者,你可能会得到你想要的东西这样的效果:

$bufferSize = new-object System.Management.Automation.Host.Size(120,5000) 
Clear-Host 
$host.UI.RawUI.BufferSize = $bufferSize 
# Generate output 
1..111 # DUMMY OUTPUT 
# Resize screen buffer 
$bufferSize.Height = $host.UI.RawUI.CursorPosition.y + 2 
$host.UI.RawUI.BufferSize = $bufferSize 

但事实并非实时...也许通过产卵工作,并与Receive-Job查询它,你可以设法调整缓冲区在飞行中。

此代码可能是你的兴趣,做了很多的控制台缓冲区的内容操纵:http://poshcode.org/730