Trace-Command (Microsoft.PowerShell.Utility)


Trace-Command

Modül:
Microsoft.PowerShell.Utility

Belirtilen ifadenin veya komutun izini yapılandırır ve başlatır.

Sözdizimi

Trace-Command
     [-InputObject <PSObject>]
     [-Name] <String[]>
     [[-Option] <PSTraceSourceOptions>]
     [-Expression] <ScriptBlock>
     [-ListenerOption <TraceOptions>]
     [-FilePath <String>]
     [-Force]
     [-Debugger]
     [-PSHost]
     [<CommonParameters>]
Trace-Command
     [-InputObject <PSObject>]
     [-Name] <String[]>
     [[-Option] <PSTraceSourceOptions>]
     [-Command] <String>
     [-ArgumentList <Object[]>]
     [-ListenerOption <TraceOptions>]
     [-FilePath <String>]
     [-Force]
     [-Debugger]
     [-PSHost]
     [<CommonParameters>]

Tanım

Trace-Command cmdlet'i belirtilen ifade veya komutun izini yapılandırır ve başlatır. Yalnızca belirtilen komut için geçerli olması dışında Set-TraceSource gibi çalışır.

Örnekler

Örnek 1: Meta veri işlemeyi, parametre bağlamayı ve bir ifadeyi izleme

Bu örnek, Get-Process Notepad ifadesinin meta veri işleme, parametre bağlama ve cmdlet oluşturma ve yok etme işlemlerinin izini başlatır.

Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost

İzleme kaynaklarını belirtmek için Ad parametresini, komutu belirtmek için İfade parametresini ve çıkışı göndermek için PSHost parametresini kullanır. konsol. Herhangi bir izleme seçeneği veya dinleyici seçeneği belirtmediğinden komut varsayılanları kullanır:

  • Hepsi izleme seçenekleri için
  • Dinleyici seçenekleri için yok

Örnek 2: ParameterBinding işlemlerinin eylemlerini izleme

Bu örnek, PowerShell'in ardışık düzenden girdi alan bir Get-Alias ifadesini işlerken ParameterBinding işlemlerinin eylemlerini izler.

$A = "i*"
Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A

Trace-Command'da InputObject parametresi, izleme sırasında işlenen ifadeye bir nesneyi iletir.

İlk komut i* dizesini $A değişkeninde saklar. İkinci komut, ParameterBinding izleme kaynağıyla birlikte Trace-Command cmdlet'ini kullanır. PSHost parametresi çıktıyı konsola gönderir.

İşlenmekte olan ifade Get-Alias $Input'tur ve burada $Input değişkeni InputObject parametresiyle ilişkilendirilir. InputObject parametresi, $A değişkenini ifadeye iletir. Gerçekte, izleme sırasında işlenen komut Get-Alias -InputObject $A" veya "$A | Get-Alias.

Örnek 3: Yerel komutlar için ParameterBinding işlemlerini izleme

PowerShell 7.3, yerel komutlar için parametre bağlamayı izleme yeteneğini ekledi. Aşağıdaki örnek, PowerShell'in yerel TestExe komutu için komut satırı bağımsız değişkenlerini nasıl ayrıştırdığını gösterir.

$a = 'a" "b'
Trace-Command -PSHOST -Name ParameterBinding { TestExe -echoargs $a 'c" "d' e" "f }

DEBUG: 2023-02-27 14:20:45.3975 ParameterBinding Information: 0 : BIND NAMED native application line args [C:\Public\Toolbox\TestExe\testexe.exe]
DEBUG: 2023-02-27 14:20:45.3978 ParameterBinding Information: 0 :     BIND cmd line arg [-echoargs] to position [0]
DEBUG: 2023-02-27 14:20:45.3979 ParameterBinding Information: 0 :     BIND cmd line arg [a" "b] to position [1]
DEBUG: 2023-02-27 14:20:45.3980 ParameterBinding Information: 0 :     BIND cmd line arg [c" "d] to position [2]
DEBUG: 2023-02-27 14:20:45.3982 ParameterBinding Information: 0 :     BIND cmd line arg [e f] to position [3]
DEBUG: 2023-02-27 14:20:47.6092 ParameterBinding Information: 0 : CALLING BeginProcessing

Parametreler

-ArgumentList

İzlenen komutun parametrelerini ve parametre değerlerini belirtir. ArgumentList'in takma adı Args'tır. Bu özellik dinamik parametrelerde hata ayıklamak için kullanışlıdır.

ArgumentList'in davranışı hakkında daha fazla bilgi için bkz. about_Splatting.

Tip :

Object[]

Takma adlar:

Args

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Command

İzleme sırasında işlenen bir komutu belirtir.

Bu parametreyi kullandığınızda PowerShell, komutu tıpkı bir ardışık düzende işleneceği gibi işler. Örneğin, komut bulma her gelen nesne için tekrarlanmaz.

Tip :

String

Konum:

1

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Debugger

Cmdlet'in izleme çıktısını hata ayıklayıcıya gönderdiğini belirtir. Çıktıyı herhangi bir kullanıcı modunda veya çekirdek modu hata ayıklayıcısında veya Visual Studio'da görüntüleyebilirsiniz. Bu parametre aynı zamanda varsayılan izleme dinleyicisini de seçer.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Expression

İzleme sırasında işlenen ifadeyi belirtir. İfadeyi kaşlı ayraçların ({comcode>) içine alın.

Tip :

ScriptBlock

Konum:

1

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-FilePath

Cmdlet'in izleme çıktısını gönderdiği dosyayı belirtir. Bu parametre aynı zamanda dosya izleme dinleyicisini de seçer.

Tip :

String

Takma adlar:

PSPath, Path

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Force

Komutu kullanıcı onayı istemeden çalışmaya zorlar. FilePath parametresiyle birlikte kullanılır. Force parametresi kullanılsa bile cmdlet güvenlik kısıtlamalarını geçersiz kılamaz.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-InputObject

İzleme sırasında işlenmekte olan ifadeye girişi belirtir. İfadenin kabul ettiği girişi temsil eden bir değişken girebilir veya bir nesneyi işlem hattından geçirebilirsiniz.

Tip :

PSObject

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-ListenerOption

Çıktıdaki her izleme iletisinin önekine isteğe bağlı verileri belirtir. Bu parametre için kabul edilebilir değerler şunlardır:

    None
    LogicalOperationStack
    DateTime
    Timestamp
    ProcessId
    ThreadId
    Callstack

Yok varsayılandır.

Bu değerler bayrak tabanlı bir numaralandırma olarak tanımlanır. Bu parametreyi kullanarak birden çok bayrak ayarlamak için birden çok değeri bir araya getirebilirsiniz. Değerler, ListenerOption parametresine bir değerler dizisi veya bu değerlerin virgülle ayrılmış dizesi olarak aktarılabilir. Cmdlet, ikili VEYA işlemini kullanarak değerleri birleştirir. Değerleri bir dizi olarak iletmek en basit seçenektir ve aynı zamanda değerler üzerinde sekme tamamlamayı kullanmanıza da olanak tanır.

Tip :

TraceOptions

Kabul edilen değerler:

Yok, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Name

İzlenen PowerShell bileşenlerinin bir dizisini belirtir. Her bileşenin izleme kaynağının adını girin. Joker karakterlere izin verilir. Bilgisayarınızdaki izleme kaynaklarını bulmak için Get-TraceSource yazın.

Tip :

String[]

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Option

İzlenen olayların türünü belirler. Bu parametre için kabul edilebilir değerler şunlardır:

    None
    Constructor
    Dispose
    Finalizer
    Method
    Property
    Delegates
    Events
    Exception
    Lock
    Error
    Errors
    Warning
    Verbose
    WriteLine
    Data
    Scope
    ExecutionFlow
    Assert
    All

Tümü varsayılandır.

Aşağıdaki değerler diğer değerlerin birleşimidir:

  • ExecutionFlow: Oluşturucu, Dispose, Sonlandırıcı, Yöntem, Temsilciler, Etkinlikler, Kapsam
  • Veri: Oluşturucu, Dispose, Sonlandırıcı, Özellik, Verbose, WriteLine
  • Hatalar: Hata, İstisna

Bu değerler bayrak tabanlı bir numaralandırma olarak tanımlanır. Bu parametreyi kullanarak birden çok bayrak ayarlamak için birden çok değeri bir araya getirebilirsiniz. Değerler, Option parametresine bir değerler dizisi veya bu değerlerin virgülle ayrılmış dizesi olarak aktarılabilir. Cmdlet, ikili VEYA işlemini kullanarak değerleri birleştirir. Değerleri bir dizi olarak iletmek en basit seçenektir ve aynı zamanda değerler üzerinde sekme tamamlamayı kullanmanıza da olanak tanır.

Tip :

PSTraceSourceSeçenekleri

Kabul edilen değerler:

Yok, Oluşturucu, Atma, Sonlandırıcı, Yöntem, Özellik, Temsilciler, Olaylar, İstisna, Kilit, Hata, Hatalar, Uyarı, Ayrıntılı, WriteLine, Veri, Kapsam, ExecutionFlow, Assert, Tümü

Konum:

2

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-PSHost

Cmdlet'in izleme çıktısını PowerShell ana bilgisayarına gönderdiğini belirtir. Bu parametre aynı zamanda PSHost izleme dinleyicisini de seçer.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

Girişler

PSObject

İfadeye girişi temsil eden nesneleri bu cmdlet'e aktarabilirsiniz.

Çıkışlar

PSObject

Bu cmdlet kendine ait bir çıktı döndürmez. İzlenen komut çıktı döndürebilir. Bu cmdlet, komut izlemesini hata ayıklama akışına yazar.

Notlar

İzleme, geliştiricilerin programlarda hata ayıklamak ve hassaslaştırmak için kullandıkları bir yöntemdir. İzleme sırasında program, dahili işleminin her adımı hakkında ayrıntılı mesajlar üretir. PowerShell izleme cmdlet'leri PowerShell geliştiricilerine yardımcı olmak için tasarlanmıştır ancak tüm kullanıcılar tarafından kullanılabilir. Kabuğun işlevselliğinin neredeyse her yönünü izlemenize olanak tanırlar.

İzleme kaynağı, her PowerShell bileşeninin izlemeyi yöneten ve bileşen için izleme mesajları oluşturan parçasıdır. Bir bileşeni izlemek için izleme kaynağını tanımlarsınız.

İzleme için etkinleştirilen PowerShell bileşenlerinin listesini görmek için Get-TraceSource'u kullanın.

Bir izleme dinleyicisi, izlemenin çıktısını alır ve bunu kullanıcıya görüntüler. İzleme verilerini bir kullanıcı modu veya çekirdek modu hata ayıklayıcıya, ana makineye veya konsola, bir dosyaya veya System.Diagnostics.TraceListener sınıfından türetilen özel bir dinleyiciye göndermeyi seçebilirsiniz. .

İlgili makaleler