2008-12-15 12 views

Odpowiedz

13

Tak i tak.

Możesz użyć wbudowanego obiektu $host, jeśli wszystko, co chcesz zrobić, to zmienić kolor tekstu. Jednak nie można zmienić samego komunikatu o błędzie - to jest zakodowane na stałe.

Co można zrobić, to (a) wyłączyć komunikaty o błędach, a zamiast tego (b) przechwycić błędy i wyświetlić własne.

Osiągnij (a) ustawiając $ErrorActionPreference = "SilentlyContinue" - nie spowoduje to ZATRZYMANIA błędu, ale zablokuje komunikaty.

Osiągnięcie (b) wymaga nieco więcej pracy. Domyślnie większość poleceń programu PowerShell nie generuje wyjątku trapów. Będziesz musiał nauczyć się uruchamiać polecenia i dodawać parametr -EA "Stop", aby wygenerować wyjątek trapacyjny, jeśli coś pójdzie nie tak. Gdy już to zrobisz, możesz stworzyć pułapkę w powłoce wpisując:

trap { 
# handle the error here 
} 

Można umieścić to w skrypcie profilu zamiast wpisywać go za każdym razem. Wewnątrz pułapki możesz wyprowadzać dowolny tekst błędu, korzystając z polecenia cmdlet Write-Error.

Prawdopodobnie więcej pracy, niż chciałeś zrobić, ale w zasadzie to zrobiłeś, o co prosiłeś.

7

Oto kilka rzeczy, które pozwolą Ci dostosować ustawienia konsoli. Możesz ustawić te ustawienia według własnego uznania w swoim profilu lub ustawić funkcje/skrypty, aby zmieniały je w różnych celach. Być może chcesz czasem tryb "Nie zerwij mnie" lub "Pokaż mi, że wszystko pójdzie nie tak" u innych. Możesz zmienić funkcję/skrypt między nimi.

## 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 

Można również użyć -ErrorAction i parametry -ErrorVariable na cmdlets wpływa tylko na to wezwanie cmdlet. Drugi wysyła błędy do podanej zmiennej zamiast domyślnego błędu $.

+0

Należy zauważyć, że zmienne $ ReportErrorShow * w rzeczywistości nie mają żadnego wpływu na PowerShell 2.0. Zobacz http://technet.microsoft.com/en-us/library/dd347675.aspx – Timbo

+0

Dobrze, PS v2.0 ma teraz inny system. Zaktualizuję moją odpowiedź. – JasonMArcher

1

Ponadto, można to zrobić, aby napisać konkretnej linii tekstu o błędzie:

$Host.UI.WriteErrorLine("This is an error") 

(podpory Chris Sears dla tej odpowiedzi)

1

To może lub nie może być to, co chcesz, ale jest $ ErrorView preferencji zmienna, że ​​można ustawić:

$ErrorView = "CategoryView" 

to daje krótszy komunikat o błędzie jedna linia, na przykład:

[PS]> get-item D:\blah 
ObjectNotFound: (D:\blah:String) [Get-Item], ItemNotFoundException 
Powiązane problemy