Skip to content

Latest commit

 

History

History
62 lines (46 loc) · 1.71 KB

File metadata and controls

62 lines (46 loc) · 1.71 KB
description ms.date ms.topic title
Avoid Using Write-Host
12/05/2024
reference
AvoidUsingWriteHost

AvoidUsingWriteHost

Severity Level: Warning

Description

The primary purpose of the Write-Host cmdlet is to produce display-only output in the host. For example: printing colored text or prompting the user for input when combined with Read-Host. Write-Host uses the ToString() method to write the output. The particular result depends on the program that's hosting PowerShell. The output from Write-Host isn't sent to the pipeline. To output data to the pipeline, use Write-Output or implicit output.

The use of Write-Host in a function is discouraged unless the function uses the Show verb. The Show verb explicitly means display information to the user. This rule doesn't apply to functions with the Show verb.

How

Replace Write-Host with Write-Output or Write-Verbose depending on whether the intention is logging or returning one or more objects.

Example

Wrong

function Get-MeaningOfLife
{
    Write-Host 'Computing the answer to the ultimate question of life, the universe and everything'
    Write-Host 42
}

Correct

Use Write-Verbose for informational messages. The user can decide whether to see the message by providing the Verbose parameter.

function Get-MeaningOfLife
{
    [CmdletBinding()]Param() # makes it possible to support Verbose output

    Write-Verbose 'Computing the answer to the ultimate question of life, the universe and everything'
    Write-Output 42
}

function Show-Something
{
    Write-Host 'show something on screen'
}

More information

Write-Host