Есть ли способ подавить "дополнительный" вывод из командлета Write-Error?

Посмотрел, но не может найти разрешение. Под "дополнительным" выходом я подразумеваю дополнительный текст, который Write-Output испускает после текста сообщения об ошибке. то есть:.

write-error -Message "test"

дает:

write-error -Message "test" : test
+ CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

Я хотел бы видеть только текст "test" и извлекать его из stderr через объект Process, который запускает PS script.

Я знаю сложное регулярное выражение (чтобы уловить ВСЕ возможные символы, которые могут появиться в категории и т.д.), можно было бы разработать, но я хочу этого избежать. Не забывайте, что Write-Error также вводит новую строку char в каждую 80-ю позицию char из-за консоли, поэтому ее также нужно учитывать.

Есть ли способ сказать Powershell (2.0) не быть настолько многословным при записи в stderr и писать только часть сообщения?

Ответ 1

Я думаю, что невозможно ограничить вывод ошибки, но вы можете обходить это следующим образом:

$Host.UI.WriteErrorLine("My custom error")

Ответ 2

$Host.UI.WriteErrorLine не обновляет переменную $error:

PS> $error.Clear()
PS> $Host.UI.WriteErrorLine("My custom error")
My custom error

PS> $Error.Count
0

Вам следует использовать командлет Write-Error, но вывод по-прежнему является подробным:

PS> Write-Error "My custom error"
Write-Error "My custom error" : My custom error
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

Есть опция вывода менее подробного сообщения со встроенной переменной $ErrorView, его значением по умолчанию является "Обычный" (подробный). Вы можете установить его в "CategoryView" для кратких сообщений.

PS> $ErrorView="CategoryView"
PS> Write-Error "My custom error"
NotSpecified: (:) [Write-Error], WriteErrorException