Взгляните на это после запуска Write-Error:
(Get-Error).ErrorRecord.CategoryInfo
Category : NotSpecified
Activity : Write-Error
Reason : WriteErrorException
Кажется, что сообщение, которое вы представляете в консоли, состоит из CategoryInfo.Activity
и Exception.Message
, соединенных со строкой ":" .
Вы можете изменить то, что Write-Error помещает в CategoryInfo.Activity, когда он генерирует ErrorRecord:
Write-Error "Demo error message" -CategoryActivity 'xxx'
xxx: Demo error message
Если вы поместите $ null или пустую строку, она вернется к тексту «Write-Error» , и когда вы используете пустое пространство, строка начинается с ":", так что это неудовлетворительно:
Write-Error "Demo error message" -CategoryActivity " "
: Demo error message
Но что, если мы поместим в сообщение два пробела? Он избавляется от этих трех символов.
Write-Error "`b`b`bDemo error message" -CategoryActivity " "
Demo error message
Даже это работает, но, честно говоря, я не знаю почему:
Write-Error "Demo error message" -CategoryActivity "`b`b"
Demo error message
Вы также можете поместить достаточно пробелов, чтобы удалить всю строку «Write-Error:»:
Write-Error ("`b"*13 + 'Demo error message')
Demo error message
Когда вы обнаруживаете ошибку и делаете что-то с сообщением где-то в строке, эти пробелы сохраняются:
try {Write-Error ("`b`b`bDemo error message") -ErrorAction Stop} catch {'The error is: ' + $_.Exception.Message}
The error iDemo error message
Работает, как требуется, определенно не рекомендуется;).