Trace-Command

Konfiguriert und startet eine Ablaufverfolgung des angegebenen Ausdrucks oder Befehls.

Syntax

expressionSet (Standard)

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

Beschreibung

Das Trace-Command Cmdlet konfiguriert und startet eine Ablaufverfolgung des angegebenen Ausdrucks oder Befehls. Es funktioniert wie Set-TraceSource, mit der Ausnahme, dass sie nur für den angegebenen Befehl gilt.

Beispiele

Beispiel 1: Ablaufverfolgungsmetadatenverarbeitung, Parameterbindung und ein Ausdruck

In diesem Beispiel wird eine Ablaufverfolgung der Metadatenverarbeitung, Der Parameterbindung und der Erstellung und Zerstörung des Get-Process Notepad Ausdrucks gestartet.

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

Er verwendet den Parameter Name , um die Ablaufverfolgungsquellen, den Expression-Parameter zum Angeben des Befehls und den PSHost-Parameter anzugeben, um die Ausgabe an die Konsole zu senden. Da keine Ablaufverfolgungsoptionen oder Listeneroptionen angegeben werden, verwendet der Befehl die Standardwerte:

  • Alle für die Ablaufverfolgungsoptionen
  • Keine für die Listeneroptionen

Beispiel 2: Nachverfolgen der Aktionen von ParameterBinding-Vorgängen

In diesem Beispiel werden die Aktionen der ParameterBinding-Vorgänge von PowerShell verfolgt, während ein Get-Alias Ausdruck verarbeitet wird, der Eingaben aus der Pipeline übernimmt.

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

In Trace-Command, der InputObject-Parameter übergibt ein Objekt an den Ausdruck, der während der Ablaufverfolgung verarbeitet wird.

Der erste Befehl speichert die Zeichenfolge i* in der $A Variablen. Der zweite Befehl verwendet das Trace-Command Cmdlet mit der ParameterBinding-Ablaufverfolgungsquelle. Der PSHost-Parameter sendet die Ausgabe an die Konsole.

Der verarbeitete Ausdruck ist Get-Alias $input, wobei die $input Variable dem InputObject-Parameter zugeordnet ist. Der InputObject-Parameter übergibt die Variable $A an den Ausdruck. Der Befehl, der während der Ablaufverfolgung verarbeitet wird, ist Get-Alias -InputObject $A" or "$A | Get-Aliaswirksam.

Beispiel 3: Trace ParameterBinding-Vorgänge für systemeigene Befehle

PowerShell 7.3 hat die Möglichkeit zum Nachverfolgen der Parameterbindung für systemeigene Befehle hinzugefügt. Das folgende Beispiel zeigt, wie PowerShell die Befehlszeilenargumente für den systemeigenen Befehl TestExeanalysiert.

$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

Parameter

-ArgumentList

Gibt die Parameter und Parameterwerte für den Befehl an, der nachverfolgt wird. Der Alias für ArgumentList lautet Args. Dieses Feature eignet sich zum Debuggen dynamischer Parameter.

Weitere Informationen zum Verhalten von ArgumentListfinden Sie unter about_Splatting.

Parametereigenschaften

Typ:

Object[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Argumente

Parametersätze

commandSet
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Command

Gibt einen Befehl an, der während der Ablaufverfolgung verarbeitet wird.

Wenn Sie diesen Parameter verwenden, verarbeitet PowerShell den Befehl genauso, wie er in einer Pipeline verarbeitet würde. Beispielsweise wird die Befehlsermittlung für jedes eingehende Objekt nicht wiederholt.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

commandSet
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Debugger

Gibt an, dass das Cmdlet die Ablaufverfolgungsausgabe an den Debugger sendet. Sie können die Ausgabe in jedem Benutzermodus- oder Kernelmodusdebugger oder in Visual Studio anzeigen. Dieser Parameter wählt auch den standardmäßigen Ablaufverfolgungslistener aus.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Expression

Gibt den Ausdruck an, der während der Ablaufverfolgung verarbeitet wird. Schließen Sie den Ausdruck in geschweifte Klammern ({}) ein.

Parametereigenschaften

Typ:ScriptBlock
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

expressionSet
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-FilePath

Gibt eine Datei an, an die das Cmdlet die Ablaufverfolgungsausgabe sendet. Dieser Parameter wählt auch den Listener für die Dateiablaufverfolgung aus.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:PSPath, Pfad

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Force

Erzwingt die Ausführung des Befehls, ohne eine Benutzerbestätigung zu verlangen. Wird mit dem FilePath-Parameter verwendet. Selbst bei Verwendung des parameters Force kann das Cmdlet keine Sicherheitseinschränkungen außer Kraft setzen.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-InputObject

Gibt Eingaben für den Ausdruck an, der während der Ablaufverfolgung verarbeitet wird. Sie können eine Variable eingeben, die die Eingabe darstellt, die der Ausdruck akzeptiert, oder ein Objekt über die Pipeline übergeben.

Parametereigenschaften

Typ:PSObject
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ListenerOption

Gibt optionale Daten für das Präfix jeder Ablaufverfolgungsnachricht in der Ausgabe an. Die zulässigen Werte für diesen Parameter sind:

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

None ist die Standardoption.

Diese Werte werden als auf Flaggen basierende Enumeration definiert. Sie können mehrere Werte kombinieren, um mehrere Flags mithilfe dieses Parameters festzulegen. Die Werte können als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte an den ListenerOption-Parameter übergeben werden. Das Cmdlet kombiniert die Werte mithilfe eines Binary-OR-Vorgangs. Das Übergeben von Werten als Array ist die einfachste Option und ermöglicht Ihnen auch die Verwendung der Tab-Vervollständigung für die Werte.

Parametereigenschaften

Typ:TraceOptions
Standardwert:None
Zulässige Werte:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Name

Gibt ein Array von PowerShell-Komponenten an, die nachverfolgt werden. Geben Sie den Namen der Ablaufverfolgungsquelle jeder Komponente ein. Wildcards sind zulässig. Um die Ablaufverfolgungsquellen auf Ihrem Computer zu finden, geben Sie folgendes ein Get-TraceSource.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Option

Bestimmt den Typ der Ereignisse, die nachverfolgt werden. Die zulässigen Werte für diesen Parameter sind:

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

All ist die Standardoption.

Die folgenden Werte sind Kombinationen anderer Werte:

  • ExecutionFlow: Constructor, , Dispose, MethodFinalizer, Delegates, , EventsScope
  • Data: Constructor, Dispose, Finalizer, Property, VerboseWriteLine
  • Errors: Error, Exception

Diese Werte werden als auf Flaggen basierende Enumeration definiert. Sie können mehrere Werte kombinieren, um mehrere Flags mithilfe dieses Parameters festzulegen. Die Werte können als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte an den Parameter Option übergeben werden. Das Cmdlet kombiniert die Werte mithilfe eines Binary-OR-Vorgangs. Das Übergeben von Werten als Array ist die einfachste Option und ermöglicht Ihnen auch die Verwendung der Tab-Vervollständigung für die Werte.

Parametereigenschaften

Typ:PSTraceSourceOptions
Standardwert:None
Zulässige Werte:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:2
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-PSHost

Gibt an, dass das Cmdlet die Ablaufverfolgungsausgabe an den PowerShell-Host sendet. Dieser Parameter wählt auch den PSHost-Ablaufverfolgungslistener aus.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

PSObject

Sie können Objekte weiterleiten, die Eingaben für den Ausdruck an dieses Cmdlet darstellen.

Ausgaben

PSObject

Dieses Cmdlet gibt keine eigene Ausgabe zurück. Der Ablaufverfolgungsbefehl gibt möglicherweise die Ausgabe zurück. Dieses Cmdlet schreibt die Befehlsablaufverfolgung in den Debugdatenstrom.

Hinweise

Die Ablaufverfolgung ist eine Methode, die Entwickler zum Debuggen und Verfeinern von Programmen verwenden. Bei der Ablaufverfolgung generiert das Programm detaillierte Meldungen zu den einzelnen Schritten in der internen Verarbeitung. Die PowerShell-Ablaufverfolgungs-Cmdlets sollen PowerShell-Entwickler unterstützen, aber sie sind für alle Benutzer verfügbar. Sie ermöglichen es Ihnen, nahezu jeden Aspekt der Funktionalität der Shell zu überwachen.

Eine Ablaufverfolgungsquelle ist der Teil jeder PowerShell-Komponente, die die Ablaufverfolgung verwaltet und Ablaufverfolgungsmeldungen für die Komponente generiert. Um eine Komponente zu verfolgen, identifizieren Sie die Ablaufverfolgungsquelle.

Hier finden Sie Get-TraceSource eine Liste der PowerShell-Komponenten, die für die Ablaufverfolgung aktiviert sind.

Ein Ablaufverfolgungslistener empfängt die Ausgabe der Ablaufverfolgung und zeigt sie dem Benutzer an. Sie können die Ablaufverfolgungsdaten an einen Benutzermodus- oder Kernelmodusdebugger, an den Host oder die Konsole, an eine Datei oder an einen von der System.Diagnostics.TraceListener-Klasse abgeleiteten benutzerdefinierten Listener senden.