About output streams
Explains the availability and purpose of output streams in PowerShell.
PowerShell provides multiple output streams. The streams provide channels for different types of messages. You can write to these streams using the associated cmdlet or redirection. For more information, see about_Redirection.
PowerShell supports the following output streams.
|Stream #||Description||Introduced in||Write Cmdlet|
|1||Success stream||PowerShell 2.0||
|2||Error stream||PowerShell 2.0||
|3||Warning stream||PowerShell 3.0||
|4||Verbose stream||PowerShell 3.0||
|5||Debug stream||PowerShell 3.0||
|6||Information stream||PowerShell 5.0||
|n/a||Progress stream||PowerShell 3.0||
The Progress stream does not support redirection.
The Success stream is the default stream for normal, successful results.
Write-Output cmdlet to explicitly write objects to this stream. This
stream is used for passing objects through the PowerShell pipeline. The
Success stream is connected to the stdout stream for native
The Error stream is the default stream for error results. Use the
Write-Error cmdlet to explicitly write to this stream. The Error stream
is connected to the stderr stream for native applications. Under most
conditions, these errors can terminate the execution pipeline. Errors written
to this stream are also added the the
$Error automatic variable. For more
information, see about_Automatic_Variables.
The Warning stream is intended for error conditions that are less severe
than errors written to the Error stream. Under normal conditions, these
warnings do not terminate execution. Warnings are not written to the
automatic variable. Use the
Write-Warning cmdlet to explicitly write to this
The Verbose stream is intended for messages that help users troubleshoot
commands as they are run interactively or from a script. Use the
Write-Verbose cmdlet to explicitly write messages to this stream. Many
cmdlets provide verbose output that is useful for understanding the internal
workings of the cmdlet. The verbose messages are output only when you use the
-Verbose common parameter. For more information, see
The Debug stream is used for messages that help scripters understand why
their code is failing. Use the
Write-Debug cmdlet to explicitly write to this
stream. The debug messages are output only when you use the
parameter. For more information, see
Debug messages are intended for script and cmdlet developers more than end users. These debug messages can contain internal details necessary for deep troubleshooting.
The Information stream is intended to provide message that help a user
understand what a script is doing. It can also be used by developers as an
additional stream used to pass information through PowerShell. The developer
can tag stream data and have specific handling for that stream. Use the
Write-Information cmdlet to explicitly write to this stream.
The Progress stream is used for messages that communicate progress in
longer running commands and scripts. Use the
Write-Progress cmdlet to
explicitly write messages to this stream. The Progress stream does not