Udostępnij za pomocą


Trace-Command

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

Składnia

expressionSet (Domyślna)

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

commandSet

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

Opis

Polecenie cmdlet Trace-Command konfiguruje i uruchamia ślad określonego wyrażenia lub polecenia. Działa jak Set-TraceSource, z tą różnicą, że ma zastosowanie tylko do 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 oraz tworzenia i zniszczenia wyrażenia Get-Process Notepad.

Trace-Command -Name Metadata, ParameterBinding, Cmdlet -Expression {Get-Process Notepad} -PSHost

Używa parametru Name w celu określenia źródeł śledzenia, parametru Expression w celu określenia polecenia oraz 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 opcji odbiornika

Przykład 2. Śledzenie akcji operacji ParameterBinding

W tym przykładzie śledzenia akcji ParameterBinding operacji programu PowerShell podczas przetwarzania wyrażenia Get-Alias, które pobiera dane wejściowe z potoku.

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

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

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

Przetwarzane wyrażenie jest 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 jest Get-Alias -InputObject $A" or "$A | Get-Alias.

Przykład 3. Operacje trace ParameterBinding 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 działania ArgumentList, zobacz about_Splatting.

Właściwości parametru

Typ:

Object[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:Argumenty

Zestawy parametrów

commandSet
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Command

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

Gdy używasz 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.

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

commandSet
Position:1
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów: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.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Expression

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

Właściwości parametru

Typ:ScriptBlock
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

expressionSet
Position:1
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-FilePath

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

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:PSPath, Ścieżka

Zestawy parametrów

(All)
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Force

Wymusza uruchomienie polecenia bez monitowania o potwierdzenie użytkownika. Używany z parametrem FilePath. Nawet, gdy używa się parametru Force, polecenie cmdlet nie jest w stanie zastąpić ograniczeń zabezpieczeń.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-InputObject

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

Właściwości parametru

Typ:PSObject
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowy:False
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-ListenerOption

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

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

None jest wartością domyślną.

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości ze sobą, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru ListenerOption jako tablicy wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binary-OR. Przekazywanie wartości jako tablicy jest najprostszą opcją i umożliwia skorzystanie z funkcji automatycznego uzupełniania dla wartości tablicy.

Właściwości parametru

Typ:TraceOptions
Domyślna wartość:None
Dopuszczalne wartości:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Name

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

Właściwości parametru

Typ:

String[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:0
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Option

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

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

All jest wartością domyślną.

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

  • ExecutionFlow: Constructor, , FinalizerDispose, Method, Delegates, , EventsScope
  • Data: Constructor, , FinalizerDispose, Property, , , VerboseWriteLine
  • Errors: Error, Exception

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości ze sobą, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru Option jako tablicy wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binary-OR. Przekazywanie wartości jako tablicy jest najprostszą opcją i umożliwia skorzystanie z funkcji automatycznego uzupełniania dla wartości tablicy.

Właściwości parametru

Typ:PSTraceSourceOptions
Domyślna wartość:None
Dopuszczalne wartości:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:2
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-PSHost

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

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

PSObject

Możesz potokować obiekty reprezentujące dane wejściowe wyrażenia do tego polecenia cmdlet.

Dane wyjściowe

PSObject

To polecenie cmdlet nie zwraca własnych danych wyjściowych. Śledzone polecenie może zwracać dane wyjściowe. To polecenie cmdlet zapisuje ślad polecenia do strumienia 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 dotyczące poszczególnych kroków przetwarzania wewnętrznego. Polecenia cmdlet śledzenia programu PowerShell są przeznaczone do pomocy deweloperom programu PowerShell, ale są 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 prześledzić składnik, należy zidentyfikować jego źródło śledzenia.

Użyj Get-TraceSource, 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.