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.
November 29, 2023
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.”
Console Output 1
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
Console Output 2
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.
Console Output 3
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.
Console Output 4
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.
Console Output 5
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
Console Output 6
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
You May Also Like