Trace an expression or command.

      Trace-Command [-command] string [-argumentList Object[]] [-name] string[] 
             [-option] PSTraceSourceOptions [-FilePath string]
                [-debugger] [-PSHost] [-ListenerOption TraceOptions]
                   [-inputObject psobject] 
                      [-force] [CommonParameters]

      Trace-Command [-Expression] scriptblock [-Name] string[] 
             [-Option] PSTraceSourceOptions [-FilePath string]
                [-Debugger] [-PSHost] [-ListenerOption TraceOptions]
                   [-InputObject psobject] [-Force] [CommonParameters]

   -Name string[]
       Name of the trace source of each component to be traced.
       Wildcards are permitted.
       Use Get-TraceSource to find the trace sources on your computer.

   -ArgumentList Object[]
       Parameters and parameter values for the command being traced.
       This feature is especially useful for debugging dynamic parameters.

   -Command string
       A command that is being processed during the trace.

       Send the trace output to the debugger (or in Visual Studio) This will
       also select the default trace listener.

   -Expression scriptblock
       The expression to be processed during the trace.
       Enclose the expression in curly braces {}

   -FilePath string
       Send the trace output to specified file. This will also select the
       file trace listener.

       Override restrictions that prevent the command from succeeding, apart
       from security settings. e.g. override the read-only attribute on a file.

   -InputObject psobject
       An input to the expression that is being processed during the trace.
       This can be a variable, or an object passed through the pipeline.

   -ListenerOption TraceOptions
       Add optional data to the prefix of each trace message in the output:
            ProcessId,ThreadId or Callstack"

   -Option PSTraceSourceOptions
       Type of events to trace, comma separated enclosed in quotes: 
       "None, Constructor, Dispose, Finalizer, Method, Property, Delegates,
       Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine,
       Data, Scope, ExecutionFlow, Assert, All".

       Pass the object created by this cmdlet through the pipeline.

       Send the trace output to the PowerShell host.
       This will also select the PSHost trace listener.

Trace-command works like Set-TraceSource except that it applies only to the specified command.

The following values for PSTraceSourceOptions are combinations of other values:
ExecutionFlow: "Constructor,Dispose,Finalizer,Method,Delegates,Events,Scope"
Data: "Constructor,Dispose,Finalizer,Property,Verbose,WriteLine"
Errors: "Error,Exception"
To specify multiple PSTraceSourceOptions, separate with commas, no spaces, and enclose in quotation marks.


Start a trace of the "get-process notepad" expression using the defaults: "All" for tracing and "None" for the listener option:

PS C:\> Trace-Command -name metadata,parameterbinding,cmdlet -expression {get -process notepad} -pshost

Trace the actions of the ParameterBinding operations of PowerShell while it processes a Get-Alias expression:

PS C:\> $a = "i*"
PS C:\> trace-command -name parameterbinding {get-alias $input} -pshost -inputobject $a

The -InputObject parameter passes the variable $a to the expression.
In effect, the command being processed during the trace is "get-alias -inputobject $a"

“Follow your instincts. That's where true wisdom manifests itself” ~ Oprah Winfrey

Related PowerShell Cmdlets

Set-Tracesource - Trace a PowerShell component.
Get-Tracesource - Get components that are instrumented for tracing.

Copyright © 1999-2024
Some rights reserved