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 |
Входные данные
Объекты можно передать в этот командлет.
Выходные данные
Этот командлет возвращает объекты, отправленные в качестве входных данных.
Примечания
Windows PowerShell включает следующие псевдонимы для Write-Output
:
echo
write
Связанные ссылки
PowerShell