Skip to main content
powershell/PSAvoidUsingWriteHost is a PSScriptAnalyzer diagnostic emitted by tally for PowerShell snippets embedded in Dockerfiles.
tally disables this rule by default for Dockerfile RUN snippets because there is no downstream pipeline or interactive host inside a one-shot container build — the script-reusability concerns this rule targets do not apply. Re-enable it with include = ["powershell/PSAvoidUsingWriteHost"] or by setting rules.powershell.PSAvoidUsingWriteHost.severity = "warning" in .tally.toml.

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.

Examples

Problematic code

Correct code

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

More information

Write-Host

Source

This rule documentation is adapted from Microsoft’s PSScriptAnalyzer documentation for AvoidUsingWriteHost, licensed under CC BY 4.0.