Как я могу написать в стандартную ошибку из PowerShell, или перехватить ошибки, такие как:
- Сообщение об ошибке отображается как ошибка (истинная запись в стандартную ошибку, так что TeamCity и Octopus видят в ней ошибку)
- Отсутствие мусора в стеке мешает мое красивое, лаконичное сообщение об ошибке
Все эти годы я выживал, throw
ошибки или записывая через Write-Error
, но я устал и стар, и в своих сценариях я просто хочу увидеть одно краткое сообщение об ошибке. Я пробовал все комбинации trap
, throw
, Write-Error
и -ErrorAction
, но безрезультатно:
try {
throw "error" # Sample code for a stack overflow. 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?"
}
Вот пользовательский опыт, который я хочу увидеть:
C:\> & .\Do-Something.ps1
An error occurred attempting to 'do something.' Have you tried rebooting?
C:\> ▏
Вместо этого я получаю:
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:\> ▏