Поделиться через


Write-Output

Записывает указанные объекты в конвейер.

Синтаксис

Write-Output
     [-InputObject] <PSObject[]>
     [-NoEnumerate]
     [<CommonParameters>]

Описание

Записывает указанные объекты в конвейер. Если Write-Output это последняя команда в конвейере, объекты отображаются в консоли.

Write-Outputотправляет объекты в основной конвейер, который также называется потоком успешности. Чтобы отправить объекты ошибок в поток ошибок, используйте Write-Error.

Этот командлет обычно используется в сценариях для отображения строк и других объектов в консоли. Одним из встроенных псевдонимов является Write-Output echo и похожий на другие оболочки, которые используются echo. Поведение по умолчанию — отображение выходных данных в конце конвейера. В PowerShell обычно не требуется использовать командлет в экземплярах, где выходные данные отображаются по умолчанию. Например, выражение Get-Process | Write-Output будет эквивалентно Get-Process. Или, echo "Home directory: $HOME" можно написать, "Home directory: $HOME".

По умолчанию Write-Output перечисляет объекты в коллекции. Write-Output Однако также может передавать коллекции вниз конвейера в виде одного объекта с параметром NoEnumerate.

Примеры

Пример 1. Получение объектов и их запись в консоль

В этом примере результаты командлета Get-Process хранятся в переменной $P . Командлет Write-Output отображает объекты процесса в $P консоли.

$P = Get-Process
Write-Output $P

Пример 2. Передача выходных данных другому командлету

Эта команда передает строку Get-Member "test output" командлету, которая отображает члены класса System.String , демонстрируя, что строка была передана по конвейеру.

Write-Output "test output" | Get-Member

Пример 3. Подавление перечисления в выходных данных

Эта команда добавляет параметр NoEnumerate для обработки коллекции или массива как одного объекта через конвейер.

Write-Output 1,2,3 | Measure-Object

Count    : 3
...

Write-Output 1,2,3 -NoEnumerate | Measure-Object

Count    : 1
...

Параметры

-InputObject

Задает объекты для отправки в конвейер. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты.

Тип:PSObject[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-NoEnumerate

По умолчанию Write-Output командлет всегда перечисляет выходные данные. Параметр NoEnumerate подавляет Write-Output поведение по умолчанию и запрещает перечисление выходных данных. Параметр NoEnumerate не действует, если команда заключена в скобки, так как скобки принудительного перечисления. Например, (Write-Output 1,2,3) по-прежнему перечисляет массив.

Параметр NoEnumerate полезен только в конвейере. Попытка увидеть эффекты NoEnumerate в консоли проблематична, так как PowerShell добавляет Out-Default в конец каждой командной строки, что приводит к перечислению. Но если вы отправляете Write-Output -NoEnumerate канал другому командлету, подчиненный командлет получает объект коллекции, а не перечисленные элементы коллекции.

Внимание

Эта проблема возникает в Windows PowerShell, исправленной в PowerShell 6.2 и более поздних версиях. При использовании NoEnumerate и явном использовании параметра InputObject команда по-прежнему перечисляется. Чтобы обойти эту проблему, передайте аргументы InputObject позиционально.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

PSObject

Объекты можно передать в этот командлет.

Выходные данные

PSObject

Этот командлет возвращает объекты, отправленные в качестве входных данных.

Примечания

Windows PowerShell включает следующие псевдонимы для Write-Output:

  • echo
  • write