是否有一种机制可以将控制台缓冲区高度设置得非常高,以便可以将大量数据回显到控制台进行查看,但不知何故将滚动距离限制为实际回显的内容,而不是整体缓冲区尺寸?当输出可以是从几十到几百行的任何地方将缓冲区设置为500或一千,然后当输出实际上小得多时具有这么大量的空滚动区域时,这有点荒谬。在我看来,滚动应该只是实际存在的,而不是完整的缓冲区,这实际上是控制台如何实现的问题。可能真正的答案是我应该推出自己的基于表单" console"。但仍然希望我只是错过了可以通过脚本管理的控制台设置。
答案 0 :(得分: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