Tôi thấy màn hình hiển thị lỗi Powershell tiêu chuẩn (văn bản màu đỏ, hiển thị đa dòng) hơi mất tập trung. Có thể tùy chỉnh điều này không?Có thể tùy chỉnh hiển thị lỗi trong PowerShell không?
Trả lời
Có và có.
Bạn có thể sử dụng đối tượng được xây dựng trong $host
nếu tất cả những gì bạn muốn làm là thay đổi màu văn bản. Tuy nhiên, bạn không thể thay đổi chính thông báo lỗi - đó là mã cứng.
Điều bạn có thể làm là (a) chặn thông báo lỗi và thay vào đó (b) bẫy các lỗi và hiển thị lỗi của riêng bạn.
Hoàn thành (a) bằng cách đặt $ErrorActionPreference = "SilentlyContinue"
- điều này sẽ không DỪNG lỗi, nhưng nó sẽ chặn thư.
Hoàn thành (b) yêu cầu công việc nhiều hơn một chút. Theo mặc định, hầu hết các lệnh PowerShell không tạo ra ngoại lệ có thể bẫy. Vì vậy, bạn sẽ phải học cách chạy các lệnh và thêm tham số -EA "Stop" để tạo ra một ngoại lệ có thể bẫy nếu có điều gì đó không ổn. Khi bạn đã thực hiện điều đó, bạn có thể tạo một cái bẫy trong vỏ bằng cách nhập:
trap {
# handle the error here
}
Bạn có thể đặt bẫy này trong kịch bản tiểu sử của mình thay vì nhập mỗi lần. Bên trong bẫy, bạn có thể xuất ra bất kỳ văn bản lỗi nào mà bạn thích bằng cách sử dụng lệnh ghép ngắn Viết-Lỗi.
Có lẽ nhiều việc hơn bạn muốn làm, nhưng về cơ bản bạn sẽ làm những gì bạn hỏi.
Đây là một loạt nội dung sẽ cho phép bạn tùy chỉnh đầu ra bảng điều khiển của mình. Bạn có thể đặt các cài đặt này theo ý muốn trong hồ sơ của mình hoặc tạo các hàm/tập lệnh để thay đổi chúng cho các mục đích khác nhau. Có thể bạn muốn một chế độ "Đừng làm phiền tôi" đôi khi, hoặc "Hiển thị cho tôi mọi thứ sai" ở những người khác. Bạn có thể tạo một hàm/tập lệnh để thay đổi giữa các hàm.
## 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
Bạn cũng có thể sử dụng tham số -ErrorAction và -ErrorVariable trên lệnh ghép ngắn để chỉ ảnh hưởng đến lệnh gọi cmdlet đó. Cái thứ hai sẽ gửi lỗi đến biến được chỉ định thay vì $ Error mặc định.
Ngoài ra, bạn có thể làm điều này để viết một dòng cụ thể của văn bản lỗi:
$Host.UI.WriteErrorLine("This is an error")
(đạo cụ để Chris Sears cho câu trả lời này)
này có thể hoặc không thể là những gì bạn muốn, nhưng có một $ ErrorView biến sở thích mà bạn có thể thiết lập:
$ErrorView = "CategoryView"
này đưa ra một thông báo lỗi một dòng ngắn hơn, ví dụ:
[PS]> get-item D:\blah
ObjectNotFound: (D:\blah:String) [Get-Item], ItemNotFoundException
- 1. Hiển thị trình hiển thị lỗi "không thể tải trình xem tùy chỉnh này"
- 2. Xác thực jQuery - Ẩn thông báo lỗi xác thực hiển thị/hiển thị lỗi tùy chỉnh
- 3. Hiển thị QDockWidget tùy chỉnh
- 4. Lỗi công cụ hiển thị pixel tùy chỉnh Java
- 5. Drupal 7 - xem tùy chỉnh với bảng tùy chỉnh, không có dữ liệu nào hiển thị
- 6. Powershell: Làm thế nào tôi có thể ngừng hiển thị lỗi trong tập lệnh?
- 7. CallOut tùy chỉnh không hiển thị chính xác trong ios6?
- 8. Trang lỗi HTTP tùy chỉnh không được hiển thị trong Internet Explorer
- 9. Tôi có thể sử dụng API Google Maps để hiển thị bản đồ tùy chỉnh không?
- 10. Hiển thị JSlider với LabelTable tùy chỉnh
- 11. Làm cách nào tôi có thể hiển thị trang lỗi 400 tùy chỉnh trong playframework 1.2.x?
- 12. Kiểm tra lỗi Pylint có thể được tùy chỉnh không?
- 13. Có cách nào để hiển thị ngoại lệ tùy chỉnh trong cảnh báo trong Android không?
- 14. Hiển thị trống UITableViewCells trong tùy chỉnh UITableView
- 15. Hiển thị tùy chỉnh trong JSP dựa trên loại lớp không có instanceof
- 16. Hiển thị cột phân loại tùy chỉnh trong danh sách loại bài đăng tùy chỉnh
- 17. Bảng hiển thị PowerShell Trong Email HTML
- 18. Cách hiển thị lỗi tùy chỉnh trong khi cài đặt Joomla! 1,6 - 1,7 thành phần?
- 19. iPhone - có thể không hiển thị bàn phím nhưng vẫn hiển thị con trỏ trong UITextField?
- 20. Không thể hiển thị lỗi với PHP trong IIS7.5
- 21. Làm thế nào để hiển thị thông báo lỗi tùy chỉnh trong ScalaTest?
- 22. IIS7 tuỳ chỉnh 404 không hiển thị
- 23. Không có lỗi giao diện hiển thị
- 24. Bộ lọc tùy chỉnh trong NUnit có thể không?
- 25. emacs lỗi không thể lưu các tùy chỉnh
- 26. Kiểm tra xem phông chữ tùy chỉnh có thể hiển thị ký tự
- 27. Tôi có thể truy cập Lớp .NET Tùy chỉnh của tôi từ PowerShell không?
- 28. Không thể để hộp tìm kiếm hiển thị theo chủ đề tùy chỉnh
- 29. Hiển thị nhãn tùy chỉnh khi không có sẵn dữ liệu cho tableView
- 30. cách hiển thị dữ liệu tùy chỉnh từ các loại bài đăng tùy chỉnh
Lưu ý rằng các biến số $ ReportErrorShow * không thực sự có tác dụng trong PowerShell 2.0. Xem http://technet.microsoft.com/en-us/library/dd347675.aspx – Timbo
Điểm tốt, PS v2.0 có một hệ thống khác ngay bây giờ. Tôi sẽ cập nhật câu trả lời của mình. – JasonMArcher