Trace-Command
Konfigurerar och startar en spårning av det angivna uttrycket eller kommandot.
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>]
Description
Cmdleten Trace-Command konfigurerar och startar en spårning av det angivna uttrycket eller kommandot.
Det fungerar som Set-TraceSource, förutom att det endast gäller för det angivna kommandot.
Exempel
Exempel 1: Spåra metadatabearbetning, parameterbindning och ett uttryck
Det här exemplet startar en spårning av metadatabearbetning, parameterbindning och cmdlet-skapande och destruktion av Get-Process Notepad-uttrycket.
Trace-Command -Name Metadata, ParameterBinding, Cmdlet -Expression {Get-Process Notepad} -PSHost
Den använder parametern Name för att ange spårningskällorna, parametern Expression för att ange kommandot och parametern PSHost för att skicka utdata till konsolen. Eftersom det inte anger några spårningsalternativ eller lyssnaralternativ använder kommandot standardvärdena:
- Allt för spårningsalternativen
- Ingen för lyssnaralternativen
Exempel 2: Spåra åtgärderna för ParameterBinding-åtgärder
Det här exemplet spårar åtgärderna i ParameterBinding åtgärder i PowerShell medan det bearbetar ett Get-Alias uttryck som tar indata från pipelinen.
$A = "i*"
Trace-Command ParameterBinding {Get-Alias $input} -PSHost -InputObject $A
I Trace-Commandskickar parametern InputObject ett objekt till uttrycket som bearbetas under spårningen.
Det första kommandot lagrar strängen i* i variabeln $A. Det andra kommandot använder cmdleten Trace-Command med ParameterBinding-spårningskällan. Parametern PSHost skickar utdata till konsolen.
Uttrycket som bearbetas är Get-Alias $input, där variabeln $input är associerad med parametern InputObject. Parametern InputObject skickar variabeln $A till uttrycket. I själva verket bearbetas kommandot under spårningen Get-Alias -InputObject $A" or "$A | Get-Alias.
Exempel 3: SpårningsparameterBinding-åtgärder för interna kommandon
PowerShell 7.3 har lagt till möjligheten att spåra parameterbindning för interna kommandon. I följande exempel visas hur PowerShell parsar kommandoradsargumenten för det interna kommandot 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
Parametrar
-ArgumentList
Anger parametrarna och parametervärdena för kommandot som spåras. Aliaset för ArgumentList är Args. Den här funktionen är användbar för felsökning av dynamiska parametrar.
Mer information om beteendet för ArgumentListfinns i about_Splatting.
Parameteregenskaper
| Typ: | Object[] |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | Argument |
Parameteruppsättningar
commandSet
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Command
Anger ett kommando som bearbetas under spårningen.
När du använder den här parametern bearbetar PowerShell kommandot precis som det skulle bearbetas i en pipeline. Till exempel upprepas inte kommandoidentifiering för varje inkommande objekt.
Parameteregenskaper
| Typ: | String |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
commandSet
| Position: | 1 |
| Obligatorisk: | True |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Debugger
Anger att cmdleten skickar spårningsutdata till felsökningsprogrammet. Du kan visa utdata i valfritt felsökningsprogram för användarläge eller kernelläge eller i Visual Studio. Den här parametern väljer också standardspårningslyssnaren.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Expression
Anger det uttryck som bearbetas under spårningen. Omslut uttrycket i klammerparenteser ({}).
Parameteregenskaper
| Typ: | ScriptBlock |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
expressionSet
| Position: | 1 |
| Obligatorisk: | True |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-FilePath
Anger en fil som cmdleten skickar spårningsutdata till. Den här parametern väljer också lyssnaren för filspårning.
Parameteregenskaper
| Typ: | String |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | PSPath, Väg |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Force
Tvingar kommandot att köras utan att be om användarbekräftelse. Används med parametern FilePath. Även om du använder parametern Force kan cmdleten inte åsidosätta säkerhetsbegränsningar.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-InputObject
Anger indata till uttrycket som bearbetas under spårningen. Du kan ange en variabel som representerar de indata som uttrycket accepterar eller skicka ett objekt via pipelinen.
Parameteregenskaper
| Typ: | PSObject |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | True |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-ListenerOption
Anger valfria data till prefixet för varje spårningsmeddelande i utdata. De godtagbara värdena för den här parametern är:
NoneLogicalOperationStackDateTimeTimestampProcessIdThreadIdCallstack
None används som standard.
Dessa värden definieras som en flaggbaserad uppräkning. Du kan kombinera flera värden för att ange flera flaggor med hjälp av den här parametern. Värdena kan skickas till parametern ListenerOption som en matris med värden eller som en kommaavgränsad sträng av dessa värden. Cmdleten kombinerar värdena med hjälp av en binär-OR-åtgärd. Att skicka värden som en matris är det enklaste alternativet och du kan även använda tab-completion på värdena.
Parameteregenskaper
| Typ: | TraceOptions |
| Standardvärde: | None |
| Godkända värden: | None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Name
Anger en matris med PowerShell-komponenter som spåras. Ange namnet på spårningskällan för varje komponent. Jokertecken tillåts. Om du vill hitta spårningskällorna på datorn skriver du Get-TraceSource.
Parameteregenskaper
| Typ: | String[] |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | 0 |
| Obligatorisk: | True |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Option
Avgör vilken typ av händelser som spåras. De godtagbara värdena för den här parametern är:
NoneConstructorDisposeFinalizerMethodPropertyDelegatesEventsExceptionLockErrorErrorsWarningVerboseWriteLineDataScopeExecutionFlowAssertAll
All används som standard.
Följande värden är kombinationer av andra värden:
-
ExecutionFlow:Constructor,Dispose,Finalizer,Method, ,Delegates, ,EventsScope -
Data:Constructor,Dispose,Finalizer,Property, ,Verbose,WriteLine -
Errors:Error,Exception
Dessa värden definieras som en flaggbaserad uppräkning. Du kan kombinera flera värden för att ange flera flaggor med hjälp av den här parametern. Värdena kan skickas till parametern Alternativ som en matris med värden eller som en kommaavgränsad sträng av dessa värden. Cmdleten kombinerar värdena med hjälp av en binär-OR-åtgärd. Att skicka värden som en matris är det enklaste alternativet och du kan även använda tab-completion på värdena.
Parameteregenskaper
| Typ: | PSTraceSourceOptions |
| Standardvärde: | None |
| Godkända värden: | None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | 2 |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-PSHost
Anger att cmdleten skickar spårningsutdata till PowerShell-värden. Den här parametern väljer även PSHost-spårningslyssnaren.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
Indata
PSObject
Du kan skicka pipe-objekt som representerar indata till uttrycket till den här cmdleten.
Utdata
PSObject
Den här cmdleten returnerar inga egna utdata. Det spårade kommandot kan returnera utdata. Den här cmdleten skriver kommandospårningen till felsökningsströmmen.
Kommentarer
Spårning är en metod som utvecklare använder för att felsöka och förfina program. När du spårar genererar programmet detaljerade meddelanden om varje steg i den interna bearbetningen. PowerShell-cmdletarna för spårning är utformade för att hjälpa PowerShell-utvecklare, men de är tillgängliga för alla användare. De gör att du kan övervaka nästan alla aspekter av gränssnittets funktioner.
En spårningskälla är den del av varje PowerShell-komponent som hanterar spårning och genererar spårningsmeddelanden för komponenten. Om du vill spåra en komponent identifierar du dess spårningskälla.
Använd Get-TraceSource för att se en lista över PowerShell-komponenter som är aktiverade för spårning.
En spårningslyssnare tar emot utdata från spårningen och visar den för användaren. Du kan välja att skicka spårningsdata till ett felsökningsprogram i användarläge eller kernelläge, till värden eller konsolen, till en fil eller till en anpassad lyssnare som härletts från klassen System.Diagnostics.TraceListener.