Trace-Command
Konfiguriert und startet eine Ablaufverfolgung des angegebenen Ausdrucks oder Befehls.
Syntax
expressionSet (Standardwert)
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 es nur für den angegebenen Befehl gilt.
Beispiele
Beispiel 1: Verarbeitung von Ablaufverfolgungsmetadaten, 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 Name-Parameter zur Angabe der Ablaufverfolgungsquellen, den Expression-Parameter zur Angabe des Befehls und den PSHost-Parameter, um die Ausgabe an die Konsole senden. Da der Befehl keine Ablaufverfolgungs- oder Listener-Optionen angibt, verwendet er die Standardeinstellungen:
- Alle Abläufe für die Ablaufverfolgungsoptionen
- Keine für die Listener-Optionen
Beispiel 2: Nachverfolgen der Aktionen von ParameterBinding-Vorgängen
In diesem Beispiel werden die Aktionen der ParameterBinding--Operationen von PowerShell nachverfolgt, während ein Get-Alias-Ausdruck verarbeitet wird, der Eingaben aus der Pipeline erhält.
$A = "i*"
Trace-Command ParameterBinding {Get-Alias $input} -PSHost -InputObject $A
In Trace-Command übergibt der InputObject-Parameter ein Objekt an den Ausdruck, der während der Ablaufverfolgung verarbeitet wird.
Der erste Befehl speichert die Zeichenfolge i* in der variablen $A. Der zweite Befehl verwendet das Trace-Command-cmdlet mit der ParameterBinding-Ablaufverfolgungsquelle. Der PSHost-Parameter sendet die Ausgabe an die Konsole.
Der Ausdruck, der verarbeitet wird, ist Get-Alias $input, wobei die $input-Variable dem InputObject Parameter zugeordnet ist. Der parameter InputObject übergibt die Variable $A an den Ausdruck. Tatsächlich wird der Befehl, der während der Ablaufverfolgung verarbeitet wird, Get-Alias -InputObject $A" or "$A | Get-Alias.
Beispiel 3: Verfolgen von ParameterBinding-Vorgängen 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 nicht für jedes eingehende Objekt 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 jeden Benutzermodus- oder Kernelmodus-Debugger oder in Visual Studio anzeigen. Dieser Parameter wählt auch den Standard-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, in die das cmdlet die Ablaufverfolgung speichert. Dieser Parameter wählt auch den Ablaufverfolgungslistener der Datei 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 parameter FilePath 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 die Eingabe 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 Ablaufverfolgungsmeldung in der Ausgabe an. Die zulässigen Werte für diesen Parameter sind:
NoneLogicalOperationStackDateTimeTimestampProcessIdThreadIdCallstack
None ist die Standardeinstellung.
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 an den ListenerOption-Parameter als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte ü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. Geben Sie Get-TraceSource ein, um die Protokollierungsquellen auf Ihrem Computer zu finden.
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 verfolgt werden. Die zulässigen Werte für diesen Parameter sind:
NoneConstructorDisposeFinalizerMethodPropertyDelegatesEventsExceptionLockErrorErrorsWarningVerboseWriteLineDataScopeExecutionFlowAssertAll
All ist die Standardeinstellung.
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 Option 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: | 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 an dieses Cmdlet weiterleiten, die Eingaben für den Ausdruck repräsentieren.
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 Optimieren von Programmen verwenden. Bei der Ablaufverfolgung erzeugt das Programm ausführliche 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 der einzelnen PowerShell-Komponenten, der die Ablaufverfolgung verwaltet und Meldungen zur Ablaufverfolgung für die Komponente generiert. Um eine Komponente zu verfolgen, identifizieren Sie deren Verfolgungsquelle.
Verwenden Sie Get-TraceSource, um eine Liste der PowerShell-Komponenten anzuzeigen, die für die Ablaufverfolgung aktiviert sind.
Ein Ablaufverfolgungslistener empfängt die Ausgabe der Ablaufverfolgung und zeigt sie dem Benutzer an. Sie können festlegen, ob die Ablaufverfolgungsdaten an einen Benutzermodus- oder Kernelmodus-Debugger, an den Host oder die Konsole, an eine Datei oder an einen benutzerdefinierten Listener gesandt werden, der aus der System.Diagnostics.TraceListener-Klasse abgeleitet ist.