Ответ 1
Я думаю, что невозможно ограничить вывод ошибки, но вы можете обходить это следующим образом:
$Host.UI.WriteErrorLine("My custom 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 и писать только часть сообщения?
Я думаю, что невозможно ограничить вывод ошибки, но вы можете обходить это следующим образом:
$Host.UI.WriteErrorLine("My custom error")
$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