Write-Output
Writes the specified objects to the pipeline. If
Write-Output
is the last command in the pipeline,
the objects are displayed in the console.
Syntax
Write-Output
[-InputObject] <PSObject[]>
[-NoEnumerate]
[<CommonParameters>]
Description
Writes the specified objects to the pipeline. If
Write-Output
is the last command in the pipeline,
the objects are displayed in the console.
Write-Output
sends objects to the primary pipeline, also known as the "output stream" or the
"success pipeline." To send error objects to the error pipeline, use
Write-Error
.
This cmdlet is typically used in scripts to display strings and other objects on the console. One of
the built-in aliases for
Write-Output
is
echo
and similar to other shells that use
echo
. The
default behavior is to display the output at the end of a pipeline. In PowerShell, it is generally
not necessary to use the cmdlet in instances where the output is displayed by default. For example,
Get-Process | Write-Output
is equivalent to
Get-Process
. Or,
echo "Home directory: $HOME"
can
be written,
"Home directory: $HOME"
.
By default,
Write-Output
enumerates through collection objects. However,
Write-Output
can also
be used to pass collections down the pipeline as a single object with the
NoEnumerate
parameter.
Examples
Example 1: Get objects and write them to the console
In this example, the results of the
Get-Process
cmdlet are stored in the
$P
variable. The
Write-Output
cmdlet displays the process objects in
$P
to the console.
$P = Get-Process
Write-Output $P
Example 2: Pass output to another cmdlet
This command pipes the "test output" string to the
Get-Member
cmdlet, which displays the members
of the
System.String
class, demonstrating that the string was passed along the pipeline.
Write-Output "test output" | Get-Member
Example 3: Suppress enumeration in output
This command adds the NoEnumerate parameter to treat a collection or array as a single object through the pipeline.
Write-Output 1,2,3 | Measure-Object
Count : 3
...
Write-Output 1,2,3 -NoEnumerate | Measure-Object
Count : 1
...
Parameters
-InputObject
Specifies the objects to send down the pipeline. Enter a variable that contains the objects, or type a command or expression that gets the objects.
Type: | PSObject [ ] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoEnumerate
By default, the
Write-Output
cmdlet always enumerates its output. The
NoEnumerate
parameter
suppresses the default behavior, and prevents
Write-Output
from enumerating output. The
NoEnumerate
parameter has no effect if the command is wrapped in parentheses, because the
parentheses force enumeration. For example,
(Write-Output 1,2,3)
still enumerates the array.
The
NoEnumerate
parameter is only useful within a pipeline. Trying to see the effects of
NoEnumerate
in the console is problematic because PowerShell adds
Out-Default
to the end of
every command line, which results in enumeration. But if you pipe
Write-Output -NoEnumerate
to
another cmdlet, the downstream cmdlet receives the collection object, not the enumerated items of
the collection.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
PSObject
You can pipe objects to this cmdlet.
Outputs
PSObject
This cmdlet returns the objects that are submitted as input.
Notes
PowerShell includes the following aliases for
Write-Output
:
-
All platforms:
-
echo
-
-
Windows:
-
write
-