2016-09-23 66 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