Como posso exibir uma mensagem de erro 'nua' no PowerShell sem um rastreamento de pilha associado?
Como gravar no stderr no PowerShell ou capturar erros de modo que
A mensagem de erro é exibida como um erro (realmente gravando no stderr para que o TeamCity e o Octopus o vejam como um erro)Nenhum lixo de rastreamento de pilha atrapalha minha linda e concisa mensagem de erroTodos esses anos eu sobrevivi porthrow
erros ou gravação viaWrite-Error
, mas estou cansado e velho e, nos meus scripts, só quero ver uma mensagem de erro concisa. Eu tenho tentado todas as combinações detrap
, throw
, Write-Error
e-ErrorAction
, para nenhum proveito:
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?"
}
Aqui está a experiência do usuário que quero ver:
C:\> & .\Do-Something.ps1
An error occurred attempting to 'do something.' Have you tried rebooting?
C:\> ▏
Em vez disso, recebo:
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:\> ▏