Skip navigation
Person typing on a keyboard and pressing Enter key Alamy

4 Cmdlets To Display Text on the PowerShell Console Screen

Learn about PowerShell cmdlets for displaying text on the console screen: Write-Warning, Write-Error, Write-Output, and Write-Host.

PowerShell provides several cmdlets for displaying text on the console screen. As you may have guessed, each cmdlet is intended for a specific purpose. In this article, I will introduce four of these cmdlets and demonstrate how to use them.

Write-Warning Cmdlet

The first cmdlet is Write-Warning, which is useful when you need to display a warning message to whoever is running the script.

Creating a warning message couldn’t be simpler. Just type the command Write-Warning, followed by the text you want to display within the warning message. For example:

Write-Warning “This is an example warning.”

Brien PoseyPowerShell screenshot showing Write-Warning cmdlet used to display a custom warning

Figure 1. You can display custom warning messages by using the Write-Warning cmdlet.

Interestingly, the Write-Warning cmdlet can do more than display static messages. You can also prompt the user about whether they want to continue with script execution. This is particularly useful when a potentially serious warning is triggered. To prompt the user for a confirmation, append -WarningAction Inquire to the command. Here is an example:

Write-Warning “This is an example warning.” -WarningAction Inquire

Brien PoseyPowerShell screenshot demonstrates the use of -Warning Action Inquire

Figure 2. You can allow the user an opportunity to suspend the script following a serious warning.

Write-Error Cmdlet

Similar to generating custom warning messages, you can also create custom error messages. The cmdlet used for doing so is Write-Error. Additionally, there’s a separate cmdlet called Throw that allows you to generate an error.

At its most basic, the Write-Error cmdlet works just like the Write-Warning cmdlet. You simply enter the cmdlet followed by the error message you want to display. However, the output can sometimes be a bit confusing, as shown in Figure 3.

Brien PoseyPowerShell screenshot shows Write-Error cmdlet used to display a custom error message

Figure 3. You can use the Write-Error cmdlet to display a custom error message.

You can add context to your custom error messages by assigning a category to the error message. Append the -Category parameter, followed by the desired category name. For example:

Write-Error “This is an example error.” -Category InvalidOperation

You can see an example of how an error category works in Figure 4. Microsoft provides a list of all the available categories.

Brien PoseyPowerShell screenshot demonstrates error category

Figure 4. You can append a category to an error message.

Write-Output Cmdlet

The Write-Output cmdlet is similar to the Write-Host cmdlet, but with two notable differences.

Firstly, Write-Output exclusively supports plain text. You can’t change the text color or add other effects to the text.

The second difference is the automatic enumeration of objects by the Write-Object cmdlet. However, if you want to treat an array as a single object within pipeline operations, you can use the -NoEnumerate parameter.

Write-Output ‘A’,’B’,’C’ -NoEnumerate | Measure-Object

Granted, this is a bit of a nonsense example, but it illustrates the idea that the output is treated as an object.

Such an operation would not be allowed with the Write-Host cmdlet.

Admittedly, I can’t seem to recall ever having used the Write-Output cmdlet in a script. While I am sure that the cmdlet has its place, I can’t think of anything that Write-Output can do that can’t be done using Write-Host and variables.

Brien PoseyPowerShell screenshot displays the use of NoEnumerate switch

Figure 5. The NoEnumerate switch allows a collection to be treated as a single item.

Write-Host Cmdlet

The Write-Host cmdlet is the standard command used to display text on the console screen in PowerShell. To use this cmdlet, you simply append the text you want to display. For example:

Write-Host “This text will be displayed on the screen.”

Unlike the Write-Output cmdlet, the Write-Host cmdlet allows you to change both the foreground and the background color of the text. Here’s an example:

Write-Host “White text on a blue background” -Foregroundcolor White -BackgroundColor Blue

Brien PoseyPowerShell screenshot shows Write-Host cmdlet supporting multiple colors

Figure 6. The Write-Host cmdlet supports colorful output.

Unfortunately, Write-Host does not support other text effects such as bold or blinking text. While it was once possible to achieve such effects by embedding various ANSI escape sequences, Microsoft appears to have disabled support for ANSI-based text effects within the PowerShell console. Some ANSI escape sequences, like those for creating a new line or inserting a tab, still work, but those related to text color and attributes (bold, underline, etc.) no longer function.

About the author

Brien Posey headshotBrien Posey is a bestselling technology author, speaker, and 21x Microsoft MVP. In addition to his ongoing work in IT, Posey has trained as a commercial astronaut candidate in preparation to fly on a mission to study polar mesospheric clouds from space.em>
Hide comments

Comments

  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Publish