Trace-Command

Nakonfiguruje a spustí trasování zadaného výrazu nebo příkazu.

Syntax

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>]

Description

Rutina Trace-Command nakonfiguruje a spustí trasování zadaného výrazu nebo příkazu. Funguje jako Set-TraceSource s tím rozdílem, že se vztahuje pouze na zadaný příkaz.

Příklady

Příklad 1: Trasování zpracování metadat, vazby parametrů a výrazu

Tento příklad spustí trasování zpracování metadat, vazby parametrů a vytvoření a zničení výrazu Get-Process Notepad .

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

Pomocí parametru Name určuje zdroje trasování, parametr Expression k zadání příkazu a parametr PSHost k odeslání výstupu do konzoly. Protože nezadá žádné možnosti trasování ani možnosti naslouchacího procesu, použije příkaz výchozí hodnoty:

  • Vše pro možnosti trasování
  • Žádné možnosti naslouchacího procesu

Příklad 2: Trasování akcí operací ParameterBinding

Tento příklad sleduje akce operací ParameterBinding PowerShellu, zatímco zpracovává Get-Alias výraz, který přebírá vstup z kanálu.

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

V Trace-Command, InputObject parametr předá objekt výrazu, který se zpracovává během trasování.

První příkaz uloží řetězec i* do $A proměnné. Druhý příkaz používá rutinu Trace-Command se zdrojem trasování ParameterBinding. Parametr PSHost odešle výstup do konzoly.

Zpracovávaný výraz je Get-Alias $Input, kde $Input proměnná je přidružena k inputObject parametru. Parametr InputObject předá proměnnou $A výrazu. V důsledku toho je příkaz zpracovávaný během trasování Get-Alias -InputObject $A" or "$A | Get-Alias.

Příklad 3: Operace trasování parametruBinding pro nativní příkazy

PowerShell 7.2 přidal PSNativeCommandArgumentPassing experimentální funkci. Tato funkce přidává možnost trasování vazby parametrů pro nativní příkazy. Následující příklad ukazuje, jak PowerShell analyzuje argumenty příkazového řádku pro nativní příkaz TestExe.

$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

Další informace najdete v tématu Použití experimentálních funkcí.

Parametry

-ArgumentList

Určuje parametry a hodnoty parametrů pro trasovaný příkaz. Alias argumentu ArgumentList je Args. Tato funkce je užitečná pro ladění dynamických parametrů.

Další informace o chování ArgumentList naleznete v tématu about_Splatting.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

Určuje příkaz, který se zpracovává během trasování.

Když použijete tento parametr, PowerShell zpracuje příkaz stejně jako by byl zpracován v kanálu. Například zjišťování příkazů se u každého příchozího objektu neopakuje.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Debugger

Označuje, že rutina odešle výstup trasování do ladicího programu. Výstup můžete zobrazit v libovolném ladicím programu pro režim uživatele nebo v režimu jádra nebo v sadě Visual Studio. Tento parametr také vybere výchozí naslouchací proces trasování.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Expression

Určuje výraz, který se zpracovává během trasování. Uzavřete výraz do složených závorek ({}).

Type:ScriptBlock
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Určuje soubor, do kterého rutina odesílá výstup trasování. Tento parametr také vybere naslouchací proces trasování souboru.

Type:String
Aliases:PSPath, Path
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Vynutí spuštění příkazu bez výzvy k potvrzení uživatele. Používá se s parametrem FilePath . I pomocí parametru Force nemůže rutina přepsat omezení zabezpečení.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Určuje vstup do výrazu, který se zpracovává během trasování. Můžete zadat proměnnou, která představuje vstup, který výraz přijímá, nebo předat objekt přes kanál.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ListenerOption

Určuje volitelná data pro předponu každé zprávy trasování ve výstupu. Tento parametr přijímá tyto hodnoty:

  • None
  • LogicalOperationStack
  • DateTime
  • Timestamp
  • ProcessId
  • ThreadId
  • Callstack

None je výchozí možnost.

Tyto hodnoty jsou definovány jako výčet založený na příznaku. Pomocí tohoto parametru můžete zkombinovat více hodnot a nastavit více příznaků. Hodnoty lze předat do parametru ListenerOption jako pole hodnot nebo jako řetězec oddělený čárkami těchto hodnot. Rutina zkombinuje hodnoty pomocí binární operace OR. Předání hodnot jako pole je nejjednodušší možností a také umožňuje použít pro hodnoty dokončování tabulátoru.

Type:TraceOptions
Accepted values:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Určuje pole komponent PowerShellu, které jsou trasovány. Zadejte název zdroje trasování jednotlivých komponent. Jsou povoleny zástupné cardy. Chcete-li najít zdroje trasování v počítači, zadejte Get-TraceSource.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Option

Určuje typ událostí, které jsou trasovány. Tento parametr přijímá tyto hodnoty:

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

All je výchozí možnost.

Následující hodnoty jsou kombinace jiných hodnot:

  • ExecutionFlow: Constructor, Dispose, Finalizer, , Method, Delegates, EventsScope
  • Data: Constructor, Dispose, Finalizer, Property, , Verbose, WriteLine
  • Errors: Error, Exception

Tyto hodnoty jsou definovány jako výčet založený na příznaku. Pomocí tohoto parametru můžete zkombinovat více hodnot a nastavit více příznaků. Hodnoty lze předat parametru Option jako pole hodnot nebo jako řetězec oddělený čárkami těchto hodnot. Rutina zkombinuje hodnoty pomocí binární operace OR. Předání hodnot jako pole je nejjednodušší možností a také umožňuje použít pro hodnoty dokončování tabulátoru.

Type:PSTraceSourceOptions
Accepted values:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PSHost

Označuje, že rutina odešle výstup trasování hostiteli PowerShellu. Tento parametr také vybere naslouchací proces trasování PSHost.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Vstupy

PSObject

Objekty, které představují vstup výrazu do této rutiny, můžete pipetovat.

Výstupy

PSObject

Tato rutina nevrací žádný vlastní výstup. Trasovaný příkaz může vrátit výstup. Tato rutina zapíše trasování příkazů do streamu ladění.

Poznámky

Trasování je metoda, kterou vývojáři používají k ladění a upřesňování programů. Při trasování program generuje podrobné zprávy o jednotlivých krocích jeho interního zpracování. Rutiny trasování PowerShellu jsou navržené tak, aby pomohly vývojářům PowerShellu, ale jsou dostupné všem uživatelům. Umožňují vám monitorovat téměř všechny aspekty funkčnosti prostředí.

Zdroj trasování je součástí každé komponenty PowerShellu, která spravuje trasování a generuje trasovací zprávy pro danou komponentu. Pokud chcete trasovat komponentu, identifikujete její zdroj trasování.

Umožňuje Get-TraceSource zobrazit seznam komponent PowerShellu, které jsou povolené pro trasování.

Naslouchací proces trasování obdrží výstup trasování a zobrazí ho uživateli. Můžete se rozhodnout odeslat data trasování do ladicího programu uživatelského režimu nebo režimu jádra, do hostitele nebo konzoly, do souboru nebo do vlastního naslouchacího procesu odvozeného z třídy System.Diagnostics.TraceListener .