AvoidUsingWriteHost

Schweregrad: Warnung

Beschreibung

Diese Regel erkennt die Verwendung von Write-Host in Funktionen, die das Verb Show nicht verwenden. Write-Host ist darauf ausgelegt, nur eine Anzeigeausgabe im Host zu erzeugen, wie zum Beispiel farbigen Text zu drucken oder Benutzer zur Eingabe mit Read-Hostaufzufordern. Es verwendet die Methode ToString() , um Ausgaben zu schreiben, wobei die Ergebnisse vom PowerShell-Hostprogramm abhängen.

Da Write-Host keine Ausgabe an die Pipeline gesendet wird, brauchst Write-Output du implizite Ausgaben, um Daten durch die Pipeline weiterzugeben.

Vermeiden Sie die Verwendung Write-Host von Funktionen, es sei denn, sie verwenden das Verb Show , was explizit bedeutet, Informationen dem Nutzer anzuzeigen. Diese Regel gilt nicht für Funktionen mit dem verb Show.

Ersetzen Sie Write-Host durch Write-Output oder Write-Verbose , je nach Ihrer Absicht. Verwenden Write-Verbose Sie sie zum Protokollieren und Write-Output zum Rücksenden von Objekten.

Beispiel

Nicht konform

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

Konform

Verwenden Sie Write-Verbose für Informationsmeldungen. Der Benutzer kann entscheiden, ob die Nachricht angezeigt werden soll, indem er den parameter Verbose bereitstellt.

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'
}