Udostępnij za pośrednictwem


Trace-Command

Konfiguruje i uruchamia ślad określonego wyrażenia lub polecenia.

Składnia

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

Opis

Polecenie Trace-Command cmdlet konfiguruje i uruchamia ślad określonego wyrażenia lub polecenia. Działa jak Set-TraceSource, z wyjątkiem tego, że dotyczy tylko określonego polecenia.

Przykłady

Przykład 1. Śledzenie przetwarzania metadanych, powiązania parametrów i wyrażenia

W tym przykładzie rozpoczyna się ślad przetwarzania metadanych, powiązania parametrów i tworzenia i niszczenia Get-Process Notepad wyrażenia.

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

Używa parametru Name do określenia źródeł śledzenia, parametru Expression w celu określenia polecenia i parametru PSHost w celu wysłania danych wyjściowych do konsoli. Ponieważ nie określa żadnych opcji śledzenia ani opcji odbiornika, polecenie używa wartości domyślnych:

  • Wszystkie dla opcji śledzenia
  • Brak dla opcji odbiornika

Przykład 2. Śledzenie akcji operacji ParameterBinding

W tym przykładzie są śledzone akcje operacji ParametrBinding programu PowerShell podczas przetwarzania Get-Alias wyrażenia, które pobiera dane wejściowe z potoku.

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

W Trace-Commandpliku parametr InputObject przekazuje obiekt do wyrażenia przetwarzanego podczas śledzenia.

Pierwsze polecenie przechowuje ciąg i* w zmiennej $A . Drugie polecenie używa Trace-Command polecenia cmdlet ze źródłem śledzenia ParameterBinding. Parametr PSHost wysyła dane wyjściowe do konsoli.

Przetwarzane wyrażenie to Get-Alias $Input, gdzie zmienna $Input jest skojarzona z parametrem InputObject . Parametr InputObject przekazuje zmienną $A do wyrażenia. W efekcie polecenie przetwarzane podczas śledzenia to Get-Alias -InputObject $A" or "$A | Get-Alias.

Przykład 3. Operacje śledzenia parametrówbindingu dla poleceń natywnych

Program PowerShell 7.3 dodał możliwość śledzenia powiązania parametrów dla poleceń natywnych. W poniższym przykładzie pokazano, jak program PowerShell analizuje argumenty wiersza polecenia dla natywnego polecenia 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

Parametry

-ArgumentList

Określa parametry i wartości parametrów dla śledzonego polecenia. Alias argumentList to Args. Ta funkcja jest przydatna do debugowania parametrów dynamicznych.

Aby uzyskać więcej informacji na temat zachowania argumentlist, zobacz about_Splatting.

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

-Command

Określa polecenie, które jest przetwarzane podczas śledzenia.

W przypadku użycia tego parametru program PowerShell przetwarza polecenie tak samo, jak w potoku. Na przykład odnajdywanie poleceń nie jest powtarzane dla każdego obiektu przychodzącego.

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

-Debugger

Wskazuje, że polecenie cmdlet wysyła dane wyjściowe śledzenia do debugera. Dane wyjściowe można wyświetlić w dowolnym debugerze trybu użytkownika lub w trybie jądra lub w programie Visual Studio. Ten parametr wybiera również domyślny odbiornik śledzenia.

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

-Expression

Określa wyrażenie, które jest przetwarzane podczas śledzenia. Ujmij wyrażenie w nawiasach klamrowych ({}).

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

-FilePath

Określa plik, do którego polecenie cmdlet wysyła dane wyjściowe śledzenia. Ten parametr wybiera również odbiornik śledzenia pliku.

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

-Force

Wymusza uruchomienie polecenia bez monitowania o potwierdzenie użytkownika. Używany z parametrem FilePath . Nawet przy użyciu parametru Force polecenie cmdlet nie może zastąpić ograniczeń zabezpieczeń.

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

-InputObject

Określa dane wejściowe wyrażenia przetwarzanego podczas śledzenia. Możesz wprowadzić zmienną reprezentującą dane wejściowe, które akceptuje wyrażenie, lub przekazać obiekt przez potok.

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

-ListenerOption

Określa opcjonalne dane do prefiksu każdego komunikatu śledzenia w danych wyjściowych. Dopuszczalne wartości dla tego parametru to:

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

Wartość domyślna to None.

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru ListenerOption jako tablicę wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binarnej OR. Przekazywanie wartości jako tablicy jest najprostszą opcją, a także umożliwia użycie uzupełniania tabulacji wartości.

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

Określa tablicę składników programu PowerShell, które są śledzone. Wprowadź nazwę źródła śledzenia każdego składnika. Dozwolone są symbole wieloznaczne. Aby znaleźć źródła śledzenia na komputerze, wpisz Get-TraceSource.

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

-Option

Określa typ śledzonych zdarzeń. Dopuszczalne wartości dla tego parametru to:

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

Wartość domyślna to All.

Następujące wartości to kombinacje innych wartości:

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

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru Opcji jako tablicę wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binarnej OR. Przekazywanie wartości jako tablicy jest najprostszą opcją, a także umożliwia użycie uzupełniania tabulacji wartości.

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

Wskazuje, że polecenie cmdlet wysyła dane wyjściowe śledzenia do hosta programu PowerShell. Ten parametr wybiera również odbiornik śledzenia PSHost.

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

Dane wejściowe

PSObject

Obiekty reprezentujące dane wejściowe do wyrażenia w tym poleceniu cmdlet można potokować.

Dane wyjściowe

PSObject

To polecenie cmdlet nie zwraca własnych danych wyjściowych. Śledzone polecenie może zwrócić dane wyjściowe. To polecenie cmdlet zapisuje ślad polecenia w strumieniu debugowania.

Uwagi

Śledzenie to metoda używana przez deweloperów do debugowania i uściślinia programów. Podczas śledzenia program generuje szczegółowe komunikaty o każdym kroku przetwarzania wewnętrznego. Polecenia cmdlet śledzenia programu PowerShell zostały zaprojektowane tak, aby ułatwić deweloperom programu PowerShell, ale są one dostępne dla wszystkich użytkowników. Umożliwiają one monitorowanie niemal każdego aspektu funkcjonalności powłoki.

Źródło śledzenia jest częścią każdego składnika programu PowerShell, który zarządza śledzeniem i generuje komunikaty śledzenia dla składnika. Aby śledzić składnik, należy zidentyfikować jego źródło śledzenia.

Użyj Get-TraceSource polecenia , aby wyświetlić listę składników programu PowerShell, które są włączone do śledzenia.

Odbiornik śledzenia odbiera dane wyjściowe śledzenia i wyświetla go użytkownikowi. Możesz wybrać opcję wysyłania danych śledzenia do debugera trybu użytkownika lub trybu jądra, do hosta lub konsoli, do pliku lub do niestandardowego odbiornika pochodzącego z klasy System.Diagnostics.TraceListener .