Trace-Command

配置并启动指定表达式或命令的跟踪。

语法

expressionSet (默认值)

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

commandSet

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

说明

Trace-Command cmdlet 配置并启动指定表达式或命令的跟踪。 它的工作方式类似于 Set-TraceSource,只是它仅适用于指定的命令。

示例

示例 1:跟踪元数据处理、参数绑定和表达式

PS C:\> Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost

此命令开始跟踪元数据处理、参数绑定和 cmdlet 创建和销毁 Get-Process Notepad 表达式。 它使用 Name 参数来指定跟踪源、表达式 参数来指定命令,PSHost 参数将输出发送到控制台。 由于它未指定任何跟踪选项或侦听器选项,因此该命令使用默认值--“全部”用于跟踪选项,而“无”用于侦听器选项。

示例 2:跟踪 ParameterBinding 操作的操作

PS C:\> $A = "i*"
PS C:\> Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A

这些命令跟踪 Windows PowerShell 的 ParameterBinding 操作的操作,同时处理从管道获取输入的 Get-Alias 表达式。

Trace-Command中,InputObject 参数将对象传递给跟踪期间正在处理的表达式。

第一个命令将字符串“i*”存储在$A变量中。 第二个命令将 Trace-Command cmdlet 与 ParameterBinding 跟踪源配合使用。 PSHost 参数将输出发送到控制台。

正在处理的表达式 Get-Alias $Input,其中$Input变量与 InputObject 参数相关联。 InputObject 参数将变量$A传递给表达式。 实际上,跟踪期间正在处理的命令 Get-Alias -InputObject $A" or "$A | Get-Alias

参数

-ArgumentList

指定要跟踪的命令的参数和参数值。 ArgumentList 的别名 Args。 此功能特别适用于调试动态参数。

参数属性

类型:

Object[]

默认值:None
支持通配符:False
不显示:False
别名:参数

参数集

commandSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Command

指定在跟踪期间正在处理的命令。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

commandSet
Position:1
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Debugger

指示 cmdlet 将跟踪输出发送到调试器。 可以在任何用户模式或内核模式调试器或 Visual Studio 中查看输出。 此参数还会选择默认跟踪侦听器。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Expression

指定在跟踪期间正在处理的表达式。 将表达式括在大括号({})。

参数属性

类型:ScriptBlock
默认值:None
支持通配符:False
不显示:False

参数集

expressionSet
Position:1
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-FilePath

指定 cmdlet 将跟踪输出发送到的文件。 此参数还会选择文件跟踪侦听器。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:PSPath

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Force

强制命令运行而不要求用户确认。 与 FilePath 参数一起使用。 即使使用 Force 参数,cmdlet 也无法替代安全限制。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InputObject

指定在跟踪期间正在处理的表达式的输入。

可以输入一个代表表达式接受的输入的变量,也可以通过管道传递对象。

参数属性

类型:PSObject
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ListenerOption

指定输出中每个跟踪消息的前缀的可选数据。 此参数的可接受值为:

  • 没有
  • LogicalOperationStack
  • 日期/时间
  • 时间戳
  • ProcessId
  • ThreadId
  • 调用堆栈

无为默认值。

若要指定多个选项,请使用逗号分隔它们,但没有空格,并将它们括在引号中,例如“ProcessID,ThreadID”。

参数属性

类型:TraceOptions
默认值:None
接受的值:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Name

指定跟踪的 Windows PowerShell 组件的数组。 输入每个组件的跟踪源的名称。 允许使用通配符。 若要在计算机上查找跟踪源,请键入 Get-TraceSource

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Option

指定跟踪的事件的类型。 此参数的可接受值为:

  • 没有
  • 构造函数
  • 丢弃
  • 终结器
  • 方法
  • 资产
  • 代表
  • 事件
  • 例外
  • Lock
  • 错误
  • 错误
  • 警告
  • 详细
  • WriteLine
  • 数据
  • Scope
  • 执行流程
  • 断言
  • 全部

All 是默认值。

以下值是其他值的组合:

  • ExecutionFlow:(构造函数、释放、终结器、方法、委托、事件和范围)
  • 数据:(构造函数、释放、终结器、属性、详细和 WriteLine)
  • 错误:(错误和异常)。

若要指定多个选项,请用逗号分隔它们,但没有空格,并用引号括起来,如“构造函数,释放”。

参数属性

类型:PSTraceSourceOptions
默认值:None
接受的值:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
支持通配符:False
不显示:False

参数集

(All)
Position:2
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PSHost

指示 cmdlet 将跟踪输出发送到 Windows PowerShell 主机。 此参数还会选择 PSHost 跟踪侦听器。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

PSObject

可以通过管道将表示表达式的输入的对象传递给 Trace-Command

输出

PSObject

返回调试流中的命令跟踪。

备注

  • 跟踪是开发人员用于调试和优化程序的方法。 跟踪时,程序会生成有关其内部处理中每个步骤的详细消息。

  • Windows PowerShell 跟踪 cmdlet 旨在帮助 Windows PowerShell 开发人员,但可供所有用户使用。 它们允许你监视 shell 功能的几乎所有方面。

  • 若要查找为跟踪启用的 Windows PowerShell 组件,请键入 Get-Help Get-TraceSource

    跟踪源是管理跟踪和生成组件跟踪消息的每个 Windows PowerShell 组件的一部分。 若要跟踪组件,请标识其跟踪源。

    跟踪侦听器接收跟踪的输出并将其显示给用户。 可以选择将跟踪数据发送到用户模式或内核模式调试器、主机或控制台、文件或派生自 System.Diagnostics.TraceListener 类的自定义侦听器。

  • 使用 commandSet 参数集时,Windows PowerShell 会像在管道中处理一样处理命令。 例如,不会为每个传入对象重复命令发现。

  • 名称表达式OptionCommand 参数的名称是可选的。 如果省略参数名称,则未命名的参数值必须按以下顺序显示:NameExpressionOptionNameCommandOption。 如果包括参数名称,参数可以按任意顺序显示。