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.