Действительно ли возможно настроить ошибочный дисплей в powershell?

из-за этого использования: public string FirstName { get; private set; } легкое свойство, что 'kosher' по правилам OO

14
задан Paul Moore 15 December 2008 в 22:56
поделиться

2 ответа

Да и да.

можно использовать встроенное $host объект, если все, что Вы хотите сделать, изменить цвет текста. Однако Вы не можете изменить само сообщение об ошибке - это - hardcoded.

то, Что Вы могли сделать, (a), подавляют сообщения об ошибках, и вместо этого (b) захватывают ошибки и отображают Ваше собственное.

Выполняют (a) установкой $ErrorActionPreference = "SilentlyContinue" - это не ОСТАНОВИТ ошибку, но это подавляет сообщения.

Выполнение (b) требует немного большего количества работы. По умолчанию большинство команд PowerShell не производит trappable исключение. Таким образом, необходимо будет учиться командам выполнения и добавить - параметр "Остановки" EA для генерации trappable исключения, если что-то идет не так, как надо. После того как Вы сделали это, можно создать прерывание в оболочке путем ввода:

trap {
 # handle the error here
}

Вы могли поместить это в свой сценарий профиля вместо того, чтобы ввести его каждый раз. В прерывании можно произвести любой текст ошибки, который Вы любите при помощи Ошибки при записи cmdlet.

, Вероятно, больше работы, чем Вы желало сделать, но это в основном, как Вы сделали бы то, что Вы спросили.

13
ответ дан 1 December 2019 в 10:19
поделиться

Вот набор материала, который позволит Вам настроить свой консольный вывод. Можно установить эти настройки, как Вы любите в своем профиле или делаете функции/сценарии для изменения их в различных целях. Возможно, Вы иногда хотите режим "Do not bug me", или "Показывают мне все идущее не так, как надо" в других. Вы могли сделать функцию/сценарий для изменения между теми.

## Change colors of regular text
$Host.UI.RawUI.BackGroundColor = "DarkMagenta"
$Host.UI.RawUI.ForeGroundColor = "DarkYellow" 

## Change colors of special messages (defaults shown)
$Host.PrivateData.DebugBackgroundColor = "Black"
$Host.PrivateData.DebugForegroundColor = "Yellow"
$Host.PrivateData.ErrorBackgroundColor = "Black"
$Host.PrivateData.ErrorForegroundColor = "Red"
$Host.PrivateData.ProgressBackgroundColor = "DarkCyan"
$Host.PrivateData.ProgressForegroundColor = "Yellow"
$Host.PrivateData.VerboseBackgroundColor = "Black"
$Host.PrivateData.VerboseForegroundColor = "Yellow"
$Host.PrivateData.WarningBackgroundColor = "Black"
$Host.PrivateData.WarningForegroundColor = "Yellow"

## Set the format for displaying Exceptions (default shown)
## Set this to "CategoryView" to get less verbose, more structured output
## http://blogs.msdn.com/powershell/archive/2006/06/21/641010.aspx
$ErrorView = "NormalView"

## NOTE: This section is only for PowerShell 1.0, it is not used in PowerShell 2.0 and later
## More control over display of Exceptions (defaults shown), if you want more output
$ReportErrorShowExceptionClass = 0
$ReportErrorShowInnerException = 0
$ReportErrorShowSource = 1
$ReportErrorShowStackTrace = 0

## Set display of special messages (defaults shown)
## http://blogs.msdn.com/powershell/archive/2006/07/04/Use-of-Preference-Variables-to-control-behavior-of-streams.aspx
## http://blogs.msdn.com/powershell/archive/2006/12/15/confirmpreference.aspx
$ConfirmPreference = "High"
$DebugPreference = "SilentlyContinue"
$ErrorActionPreference = "Continue"
$ProgressPreference = "Continue"
$VerbosePreference = "SilentlyContinue"
$WarningPreference = "Continue"
$WhatIfPreference = 0

можно также использовать-ErrorAction и параметры-ErrorVariable на cmdlets для влияния только на это вызов cmdlet. Второй отправит ошибки в указанную переменную вместо $Error по умолчанию.

9
ответ дан 1 December 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: