¿Cómo puedo mostrar un mensaje de error 'desnudo' en PowerShell sin un stacktrace que lo acompañe?
¿Cómo puedo escribir en stderr desde PowerShell, o atrapar errores tales que
El mensaje de error se muestra como un error (realmente escribiendo a stderr para que TeamCity y Octopus lo vean como un error)Ningún montón de basura traza confunde mi hermoso mensaje de error concisoTodos estos años he sobrevivido porthrow
ing errores o escribiendo a través deWrite-Error
, pero estoy cansado y viejo, y en mis scripts solo quiero ver un mensaje de error conciso. He estado probando todas las combinaciones detrap
, throw
, Write-Error
y-ErrorAction
, en vano:
try {
throw "error" #sample code for StackOverflow. In the theater
#of your mind, imagine there is code here that does something real and useful
} catch {
Write-Error "An error occurred attempting to 'do something.' Have you tried rebooting?"
}
Aquí está la experiencia del usuario que quiero ver:
C:\> & .\Do-Something.ps1
An error occurred attempting to 'do something.' Have you tried rebooting?
C:\> ▏
En cambio obtengo:
C:\> & .\Do-Something.ps1
An error occurred attempting to 'do something.' Have you tried rebooting?
At line:1 char:1
+ Do-RealWork
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Do-RealWork
C:\> ▏