Uważam, że standardowe wyświetlanie błędów Powershell (czerwony tekst, wyświetlanie wieloliniowe) nieco rozprasza uwagę. Czy można to dostosować?Czy można dostosować wyświetlanie błędów w programie powershell?
Odpowiedz
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ś.
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 $.
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)
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
- 1. Czy można dostosować znaki niewidoczne w xcode4?
- 2. Powershell: Jak mogę zatrzymać wyświetlanie błędów w skrypcie?
- 3. Czy można łatwo subskrybować domyślną kolejkę błędów w programie EasyNetQ?
- 4. Czy można dostosować znacznik UITabBarItem?
- 5. Czy można dostosować linię bazową w NSAttributedString?
- 6. Jak dostosować śledzenie reklam w programie AdSense?
- 7. Django: Poprawne wyświetlanie błędów formowania
- 8. Wyświetlanie błędów krytycznych/powiadomień w przeglądarce
- 9. Czy okno modemu Wicket można dostosować?
- 10. Czy można dostosować schemat kolorów mapy Google?
- 11. HighCharts: Czy można dostosować kolory poszczególnych serii?
- 12. Czy można dostosować znaczek ikony aplikacji: Xcode?
- 13. Wyświetlanie komunikatów dziennika błędów w dzienniku GTK
- 14. Czy można dostosować pionowe skalowanie czcionki za pomocą CSS?
- 15. Jak przechwytywać sygnały w programie PowerShell?
- 16. Wykonywanie skryptu PowerShell w programie Fake
- 17. Konwersja ciągu na DateTime w programie PowerShell
- 18. Dynamiczne tworzenie zmiennych w programie PowerShell
- 19. Dlaczego PowerShell ISE jest zawieszony w tym programie C#?
- 20. Uzyskiwanie błędów wyświetlania błędów programowania w produkcji
- 21. Obsługa błędów dla Invoke-RestMethod - Powershell
- 22. Czy można asynchronizować aktualizację podpowiedzi PowerShell?
- 23. Jak dostosować wyjście kodowania JSON w programie Go?
- 24. Czy można dostosować kolory podświetlania składni zmiennej RockScroll?
- 25. Czy można używać podkwerendy w warunku dołączania w programie Access?
- 26. Jaki jest właściwy sposób obsługi błędów w PowerShell?
- 27. Wyświetlanie błędów konsoli i alertów w dziale div na stronie
- 28. Wyświetlanie błędów pietruszki w podpowiedzi do programu ładującego
- 29. Czy można ustawić obiekt DefaultDisplayPropertySet w skrypcie PowerShell v2?
- 30. Czy można zresetować przestrzeń roboczą w ISE Powershell?
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
Dobrze, PS v2.0 ma teraz inny system. Zaktualizuję moją odpowiedź. – JasonMArcher