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 theWrite-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
ReplaceWrite-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
UseWrite-Verbose for informational messages. The user can decide whether to see the message by
providing the Verbose parameter.