Thêm cửa sổ theo dõi PowerShell thú vị
Vào ngày Thứ Sáu vui vẻ cuối cùng của tôi, tôi đã đăng một bài viết về cách sử dụng Internet Explorer làm cửa sổ theo dõi. Ý tưởng là đưa các thông báo gỡ lỗi hoặc theo dõi vào một ứng dụng riêng biệt. Tôi đã nhận được nhận xét trên bài đăng gợi ý rằng tôi có thể thực hiện điều tương tự bằng cách sử dụng tiện ích Chế độ xem gỡ lỗi từ Sysinternals. Ứng dụng này được sử dụng để ghi lại các thông báo gỡ lỗi nên tôi nghĩ mình nên dùng thử.
Sau khi tải xuống, bạn sẽ chạy thủ công một lần để chấp nhận các điều khoản cấp phép và thiết lập bộ lọc. Tôi cho rằng bạn không thường xuyên sử dụng chương trình này cho bất kỳ mục đích nào khác. Tùy thuộc vào máy tính của bạn, bạn có thể không cần bộ lọc nhưng đó là cách tốt nhất để làm việc với chức năng Thông báo gỡ lỗi của tôi.
#requires -version 2.0
<#
Requires dbgview.exe from Sysinternals to be in your path or
modify the function. You should set up a filter in dbview.exe
before using this to filter on the Category.
#>
Function Debug-Message {
[cmdletbinding()]
Param(
[Parameter(Position=0,Mandatory=$True,HelpMessage="Enter a message")]
[string]$Message,
[string]$Category="PS Trace"
)
#only run if $TraceEnabled is True
if ($script:TraceEnabled) {
#test if dbgview.exe is already running and start it if not.
if (-NOT (Get-Process -Name Dbgview -ErrorAction SilentlyContinue)) {
Try {
#start with /f to skip filter confirmation prompt
Start-Process G:\Sysinternals\Dbgview.exe /f
#give the application to start
Start-Sleep -Seconds 1
}
Catch {
Write-Warning "Failed to find or start dbgview.exe"
Return
}
} #if dbgview is not running
#display the message in dbgview.exe
[System.Diagnostics.Debug]::WriteLine($Message,$Category)
} #if $TraceEnabled
} #close Debug-Message
Set-Alias -Name Trace -Value Debug-MessageBản chất của hàm này là dòng [System.Diagnostics.Debug]::WriteLine($Message,$Category). Danh mục sẽ hiển thị dưới dạng tiền tố cho thông báo trong cửa sổ Chế độ xem gỡ lỗi. Tôi đặt bộ lọc trong Chế độ xem gỡ lỗi trên danh mục đó, tức là PS Trace*. Hàm này, giống như hàm theo dõi IE của tôi, dựa vào biến $TraceEnabled để được đặt thành $True. Nếu quy trình dbgview.exe không chạy, hàm sẽ khởi động nó. Tôi đã mã hóa cứng đường dẫn đến dbgview.exe mà bạn sẽ cần điều chỉnh. Cách tiếp cận dễ dàng nhất là thả dbgview.exe vào thư mục Windows của bạn hoặc sửa đổi biến %PATH% để bao gồm thư mục Sysinternals của bạn.
Sử dụng chức năng không khác gì phiên bản IE của tôi. Trên thực tế, trong tập lệnh demo của tôi, tất cả những gì tôi cần làm là thay đổi tập lệnh nào có nguồn gốc dấu chấm.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# dot source the Trace function
#. C:\scripts\Trace.ps1
. C:\scripts\Debug-Message.ps1
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#>
if ($Trace) {
#set the variable to turn tracing on
$script:TraceEnabled = $True
}Tôi đã thêm bí danh “Dấu vết” vào chức năng Chế độ xem gỡ lỗi mới của mình để không phải thay đổi bất kỳ điều gì khác. Khi tôi chạy tập lệnh của mình bằng tham số -Trace, tôi nhận được một cửa sổ theo dõi tiện dụng như thế này.
Điều tiện ích của tiện ích này là bạn có thể dễ dàng lưu kết quả vào một tệp. Tôi cũng không phải đối phó với các đối tượng COM lộn xộn. Nếu không thiết lập bộ lọc trước, bạn có thể gặp khó khăn khi tìm thông báo theo dõi từ tập lệnh của mình. Nhưng đó là sự lựa chọn của bạn.
Bạn nghĩ sao?
