Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft PowerShell Windows PowerShell. Все способы получения выходных данных RSS

Windows PowerShell. Все способы получения выходных данных

Текущий рейтинг: 5 (проголосовало 2)
 Посетителей: 3073 | Просмотров: 4175 (сегодня 0)  Шрифт: - +

Windows PowerShell — один из тех замечательных продуктов, которые постоянно удивляют новыми возможностями и функциями. Получение выходной информации — на экран или в любом другом виде — является одной областью, где замечательно видна глубина и многогранность Windows PowerShell.

Откройте экземпляр Windows PowerShell (предпочтительно версии 2, которая доступна для всех версий Windows, начиная с Windows XP) и выполните команду Gcm –verb Out. Вы увидите список всех командлетов, способных генерировать выходные данные в различных формах.

Как происходит вывод

Как и все остальное в Windows PowerShell, различные командлеты, название которых начинается с Out-, «потребляют» объекты. Это означает, что выходные данные отображаются в окне при выполнении команды, похожей на эту:

В действительности, часть с Out-Host не нужна, потому что в Windows PowerShell в конце конвейера есть жестко прописанный командлет Out-Default, которые переправляет все в Out-Host. Так что такая команда:

функционально равноценна команде:

«Под капотом» Out-Default переправит объекты в Out-Host. Интересная особенность всех командлетов, название которых начинается с Out-, в том, что они не в состоянии обрабатывать «реальные» объекты — только специальный тип объекта форматирования, созданного подсистемой форматирования оболочки.

Получая «нормальные» объекты, внутренние механизмы командлета вызывают один из Format-командлетов, используя набор внутренних правил и параметров конфигурации по умолчанию. Format-командлет предоставляет объекты форматирования, описывающие порядок построения выходных данных, а Out-командлет помещает их в указанное устройство. Так, при выполнении команды:

в действительности выполняется такая последовательность:

Суть в том, что Out-командлеты могут использовать только то, что предоставлено Format-командлетом. По большей части только Out-командлеты способны обработать то, что предоставляют Format-командлеты. Таким образом, ваша командная строка будет всегда завершаться Format-командлетом за исключением ситуаций, когда в конце стоит Out-командлет.

Out: конец истории

Поскольку предполагается, что Out-командлеты имеют дело с конечным результатом всех предыдущих команд, сами по себе (за одним исключением) они не производят никаких выходных данных. Если вы используете Out-командлет, он всегда будет стоять последним в командной строке. По завершении этого командлета в конвейере не остается ничего, с чем могли бы работать другие командлеты.

Единственное исключение из этого правила, по крайней мере, когда речь идет о встроенных командлетах, — Out-String. Поведение этого командлета сильно отличается от работы обычных Out-командлетов. Он помещает String-объекты в конвейер. Этот командлет и его исключения нас сейчас не интересуют — просто знайте, что они существуют. Чтобы узнать о нем поподробнее, выполните команду Help Out-String.

Минуточку — я сказал «встроенные Out-командлеты»? Все правильно, этим я хотел сказать, что есть другие Out-командлеты. В частности, есть платное расширение PowerGadgets, разработанное сторонней компанией и добавляющее в оболочку интересные командлеты, такие как Out-Chart и Out-Gauge. Дополнительные командлеты не обязаны соблюдать все описанные здесь правила, так что не забудьте предварительно прочитать относящиеся к ним страницы справки (если они есть), чтобы лучше понять, как они работают и что делают.

Варианты использования Out-командлетов

Windows PowerShell поддерживает много встроенных вариантов вывода информации:

  • Out-Host используется по умолчанию, если не задать что-то другое;
  • Out-Printer отправляет выходную информацию на принтер. Информация форматируется с использованием специально заданного Format-командлета или того, что задан по умолчанию в подсистеме форматирования;
  • Out-File отправляет информацию в файл. С точки зрения функциональности это то же самое, что выполнение команды Dir > file.txt. Причем сокращенные команды > и >> фактически используют командлет Out-File. У Out-File масса вариантов определения ширины выходного файла (что влияет на то, как оболочка решает отформатировать выходные данные), кодировки символов, режима записи (добавление или перезапись) и т. п.
  • Out-Grid появился в Windows PowerShell v2 и для своей работы требует Microsoft .NET Framework 3.5 SP1. Этот командлет отображает объекты в графической таблице, поддерживающей сортировку по щелчку столбцов и оснащенной полем фильтрации и поиска нужных результатов.

Очень полезно почитать справку этих командлетов. Например, знаете ли вы, что в Out-Host есть параметр –paging, заставляющий отображать выходную информацию по странице за раз? Он напоминает команду more в старой оболочке Cmd.exe. Попробуйте выполнить такую команду:

Параметр –width позволяет создавать исключительно широкие таблицы. С его помощью я создавал огромные таблицы и печатал полученные файлы на плоттере, получая наглядные плакаты, которые можно было вешать на стену. По умолчанию задана ширина в 80 столбцов, что недостаточно для очень широких таблиц. По умолчанию оболочка отобразит данные в виде таблицы, только если в них не больше четырех столбцов или если конфигурация по умолчанию предусматривает нестандартное размещение таблицы:

У Out-Printer есть параметр –name, позволяющий задать нужный принтер, если он отличается от текущего принтера Windows.

Наконец, параметр –title в командлете Out-Grid позволяет определить заголовок окна. Это полезно, когда сценарий отображает сетку, потому что удачный заголовок сильно помогает пользователю понять смысл.

Когда вывод не нужен

Командлету Out-Null. можно «скормить» выходные данные, которые отображать не надо. Например, большинство методов WMI возвращает объект, информирующий об успехе или неудаче операции. Если вы не хотите видеть эти сведения, просто передайте их по конвейеру в Out-Null:

«Играясь» с различными вариантами вывода, можно не только лучше разобраться, как работает и что умеет делать Windows PowerShell, но и понять, насколько можно облегчить себе работу и не тратить лишние усилия.

Связанные материалы

 
Invoke-WmiMethod –name reboot –class win32_operatingsystem |
Out-Null

 
Get-WmiObject Win32_Service | Format-Table * |
Out-File c:\services.txt –width 750

 
Get-Service | Out-Host –paging

 
Get-Process | Format-Table | Out-Host

 
Get-Process

 
Get-Process | Out-Default

 
Get-Process

 
Get-Process | Out-Host
Автор: Дон Джонс  •  Иcточник: Журнал TechNet  •  Опубликована: 11.03.2011
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   Windows PowerShell.


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.