Главная > Powershell > Out-Host vs. more

Out-Host vs. more

На днях наткнулся на одну особенность в Powershell, которой, в принципе, очень редко пользуюсь, но всё равно захотелось поделиться.

Речь идёт об использовании конструкции | more при выводе больших объёмов текста в консоль (именно в консоль, а не всякие там PowerGUI, Powershell ISE и прочие редакторы).

Например, команда

Get-ChildItem c:\windows | more

будет поэкранно выводить содержимое каталога C:\Windows.

Вроде всё работает замечательно. Вернее не вроде – оно работает! Но если выводимой информации будет побольше, например

Get-ChildItem -recurse c:\windows | more

то перед тем как что-то вывести Powershell подвиснет на какое-то время.

Почему так происходит?

Дело в том, что more – это не что иное как утилита more.com. Убедиться в этом можно, например, взглянув на процессы во время выполнения этой команды через Process Explorer:

 Powershell | more

А more.com, в свою очередь, не работает с данными в реальном времени. Она ожидает получения всех входных данных, и лишь затем начинает их выводить, разбив на блоки по размеру экрана.

Поэтому в данном случае предпочтительнее воспользоваться командлетом Out-Host с параметром –Paging:

Get-ChildItem -Recurse c:\windows | Out-Host -Paging

На выходе получим то же самое. Но данные начнут отображаться сразу же после нажатия Enter, так как в этом случае обработка и вывод данных происходит в режиме реального времени.

Реклама
Рубрики:Powershell Метки:
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: