Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Introduction_to_Windows_PowerShell.rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.59 Mб
Скачать

Перенаправление данных с помощью командлетов Out-*

Windows PowerShell предоставляет несколько командлетов, которые позволяют напрямую управлять выводом данных. Эти командлеты обладают двумя общими важными характеристиками.

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

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

PS> Get-Process | Out-Host -Paging | Format-List

Можно было бы ожидать, что команда отобразит страницы сведений о процессе в виде списка. Вместо этого она выводит их в виде табличного списка по умолчанию:

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName

------- ------ ----- ----- ----- ------ -- -----------

101 5 1076 3316 32 0.05 2888 alg

...

618 18 39348 51108 143 211.20 740 explorer

257 8 9752 16828 79 3.02 2560 explorer

...

<SPACE> next page; <CR> next line; Q quit

...

Командлет Out-Host передает данные напрямую консоли, поэтому команда Format-List так и не получает ничего для форматирования.

Чтобы правильно структурировать эту команду, нужно поместить командлет Out-Host в конец конвейера, как показано ниже. При этом данные процесса форматируются в виде списка перед разбиением на страницы и отображением.

PS> Get-Process | Format-List | Out-Host -Paging

Id : 2888

Handles : 101

CPU : 0.046875

Name : alg

...

Id : 740

Handles : 612

CPU : 211.703125

Name : explorer

Id : 2560

Handles : 257

CPU : 3.015625

Name : explorer

...

<SPACE> next page; <CR> next line; Q quit

...

Это относится ко всем командлетам Out. Командлет Out всегда должен находиться в конце конвейера.

Примечание

Все командлеты Out подготавливают вывод в виде текста, используя текущее форматирование для окна консоли, включая ограничения на длину строки.

Разбиение вывода консоли на страницы (командлет Out-Host)

По умолчанию Windows PowerShell передает данные в окно главного приложения, что и является функцией командлета Out-Host. Как было описано ранее, основное назначение командлета Out-Host заключается в разбиении данных на страницы. Например, следующая команда использует командлет Out-Host для разбиения на страницы вывода командлета Get-Command:

PS> Get-Command | Out-Host -Paging

Для разбиения данных на страницы можно также использовать функцию more. В Windows PowerShell функция more вызывает команду Out-Host -Paging. Следующая команда демонстрирует использование функции more для разбиения на страницы вывода командлета Get-Command:

PS> Get-Command | more

Если в качестве параметров этой функции указать одно или несколько имен файлов, функция прочитает указанные файлы и разобьет на страницы их содержимое при передаче в главное приложение:

PS> more c:\boot.ini

[boot loader]

timeout=5

default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

[operating systems]

...

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]