2016-09-23 2 views
0

Есть ли механизм для установки высоты буфера консоли очень высоко, так что большой объем данных можно отбросить на консоль для проверки, но как-то ограничьте расстояние прокрутки до того, что на самом деле было эхом, а не общий размер буфера? Это немного смешно, когда выход может быть где угодно от десятков до нескольких сотен строк, чтобы установить буфер на 500 или тысячу, а затем иметь это огромное количество пустой области прокрутки, когда выход на самом деле намного меньше. Мне кажется, что в прокрутке должно быть только то, что на самом деле есть, а не полный буфер, и это действительно проблема того, как консоль реализована. И, вероятно, реальный ответ: я должен перевернуть мою собственную консоль на основе форм. Но все же надеюсь, что мне просто не хватает настройки консоли, которой можно управлять с помощью скрипта.Буфер и расстояние прокрутки 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

Смежные вопросы