Daha Fazla PowerShell İzleme Penceresi Eğlencesi


Geçen Cuma Eğlencemde Internet Explorer'ı izleme penceresi olarak kullanmayla ilgili bir makale yayınlamıştım. Buradaki fikir, hata ayıklama veya izleme mesajlarını ayrı bir uygulamaya koymaktı. Gönderiye Sysinternals'ın Hata Ayıklama Görünümü yardımcı programını kullanarak benzer bir şey yapabileceğimi öneren bir yorum aldım. Bu uygulama hata ayıklama mesajlarını yakalamak için kullanılıyor, bu yüzden deneyeyim diye düşündüm.

İndirdikten sonra, lisans koşullarını kabul etmek ve bir filtre ayarlamak için uygulamayı bir kez manuel olarak çalıştırmak üzere çalıştıracaksınız. Bu programı düzenli olarak başka bir şey için kullanmadığınızı varsayıyorum. Bilgisayarınıza bağlı olarak bir filtreye ihtiyacınız olmayabilir ancak bu, Hata Ayıklama Mesajı işlevim ile çalışmanın en iyi yoludur.

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

Bu fonksiyonun özü [System.Diagnostics.Debug]::WriteLine($Message,$Category) satırıdır. Kategori, Hata Ayıklama Görünümü penceresinde mesajın öneki olarak görünecektir. Bu kategori için Hata Ayıklama Görünümü'nde bir filtre ayarladım, yani PS Trace*. Bu işlev, IE izleme işlevim gibi, $TraceEnabled değişkeninin $True olarak ayarlanmasına dayanır. Dbgview.exe işlemi çalışmıyorsa, işlev onu başlatır. Ayarlamanız gereken dbgview.exe yolunu sabit kodladım. En kolay yaklaşım, dbgview.exe dosyasını Windows klasörünüze bırakmak veya %PATH% değişkeninizi Sysinternals klasörünüzü içerecek şekilde değiştirmektir.

İşlevi kullanmak IE sürümümden farklı değil. Aslında demo betiğimde tek yapmam gereken, hangi betiğin nokta kaynaklı olacağını değiştirmekti.

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

Yeni Hata Ayıklama Görünümü işlevime bir "İzleme" takma adı ekledim, böylece başka hiçbir şeyi değiştirmenize gerek kalmaz. Betiğimi -Trace parametresini kullanarak çalıştırdığımda, bunun gibi kullanışlı bir izleme penceresi alıyorum.

Bu yardımcı programın kullanışlı yanı, sonuçları bir dosyaya kaydetmenin kolay olmasıdır. Ayrıca karmaşık COM nesneleriyle de uğraşmam gerekmiyor. Filtreyi önceden ayarlamazsanız komut dosyanızdaki izleme mesajlarını bulmakta zorlanabilirsiniz. Ama bu senin seçimin.

Ne düşünüyorsun?

İlgili makaleler