PowerShell:
Schrijven naar standaardfout

Hoe te:

# Schrijf een eenvoudige fout naar stderr
Write-Host "Oeps, er is een fout opgetreden!" -ForegroundColor Red 1>&2

# Schrijf een fout met behulp van het Write-Error cmdlet
Write-Error "Dit is een foutmelding!"

# Gebruik $ErrorView om fouten anders weer te geven of te behandelen
$ErrorView = "CategoryView"
probeer {
    Get-ChildItem "nonexistentfile.txt"
} vang {
    Write-Host $_.Exception.Message -ForegroundColor Red 1>&2
}

Voorbeelduitvoer:

Oeps, er is een fout opgetreden!
Write-Error: Dit is een foutmelding!
Get-ChildItem: Kan het pad 'C:\...\nonexistentfile.txt' niet vinden omdat het niet bestaat.

Diepere Duik

Historisch gezien heeft het scheiden van stdout en stderr Unix-roots, waardoor gebruikers uitvoer apart kunnen omleiden. PowerShell, dat dit concept erft, gebruikt Write-Error en Write-Host (met een omleiding), onder andere cmdlets, om berichten naar stderr te sturen. Onder de motorkap, wikkelt PowerShell .NET-methoden om deze functie te implementeren.

Alternatieven zijn onder andere het gebruik van throw statements of exception handling blocks; deze beïnvloeden echter de scriptstroom. Schrijven naar stderr onderbreekt de uitvoering niet, tenzij je specifiek de $Error variabele controleert of -ErrorAction parameters gebruikt.

Zie Ook