如下说明是翻译: help Trace-Command 产生的帮助信息.
译者: Edengundam(马涛)
Trace-Command
大纲
使用Trace-Command cmdlet, 可以对特定表达式和命令进行跟踪, 并可以对追踪过程进行配置.
语法
Trace-Command [-name] <string[]> [-expression] <scriptblock> [[-option] {<None> | <Constructor> | <Dispose> | <Finalizer> | <Method> | <Property> | <Delegates> | <Events> | <Exception> | <Lock> | <Error> | <Errors> | <Warning> | <Verbose> | <WriteLine> | <Data> | <Scope> | <ExecutionFlow> | <Assert> | <All>}] [-filePath <string>] [-debugger] [-pSHost] [-listenerOption {<None> | <LogicalOperationStack> | <DateTime> | <Timestamp> | <ProcessId> | <ThreadId> | <Callstack>}] [-inputObject <psobject>] [-force] [<CommonParameters>]
Trace-Command [-name] <string[]> [-command] <string> [[-option] {<None> | <Constructor> | <Dispose> | <Finalizer> | <Method> | <Property> | <Delegates> | <Events> | <Exception> | <Lock> | <Error> | <Errors> | <Warning> | <Verbose> | <WriteLine> | <Data> | <Scope> | <ExecutionFlow> | <Assert> | <All>}] [-filePath <string>] [-debugger] [-pSHost] [-listenerOption {<None> | <LogicalOperationStack> | <DateTime> | <Timestamp> | <ProcessId> | <ThreadId> | <Callstack>}] [-inputObject <psobject>] [-argumentList <Object[]>] [-force] [<CommonParameters>]
详细描述
使用Trace-Command cmdlet, 可以对特定表达式和命令进行跟踪, 并可以对追踪过程进行配置. 它的工作类似于Set-TraceSource, 但是Trace-Command只应用在指定命令上.
参数
-name <string[]>
指出哪些Windows PowerShell组件被追踪. 输入每个组件的跟踪源名称, 这里允许你使用通配符匹配多个名称. 查看您电脑上的跟踪源, 可以输入cmdlet "Get-TraceSource".
强制参数?
|
true
|
参数位置?
|
1
|
默认值
|
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
true
|
-expression <scriptblock>
指定在跟踪过程中, 需要执行的表达式. 将表达式使用花括号({})括起来.
强制参数?
|
true
|
参数位置?
|
2
|
默认值
|
Null
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-option <PSTraceSourceOptions>
指定需要跟踪的事件.
合法取值为: None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, 和All. "All"是默认值.
如下的取值是将多个值组合在一起:
· ExecutionFlow: (Constructor, Dispose, Finalizer, Method, Delegates, Events, and Scope)
· Data: (Constructor, Dispose, Finalizer, Property, Verbose, and WriteLine)
· Errors: (Error and Exception).
如果需要指定多个选项, 可以使用逗号将他们分割起来. 注意如果需要使用空白字符, 请使用引号将字符串保护起来, 例如"Constructor,Dispose".
如下列出此参数接受的参数:
· None
· Constructor
· Dispose
· Finalizer
· Method
· Property
· Delegates
· Events
· Exception
· Lock
· Error
· Errors
· Warning
· Verbose
· WriteLine
· Data
· Scope
· ExecutionFlow
· Assert
· All
强制参数?
|
false
|
参数位置?
|
3
|
默认值
|
All
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-filePath <string>
将追踪信息存储到指定的文件中. 此参数选择文件监听器.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
true
|
-debugger <SwitchParameter>
将跟踪结果发送给调试器. 你可以通过各种用户态, 内核态和Visual Studio的调试器检查输出. 此参数将会选择默认的监听器.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
False
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-pSHost <SwitchParameter>
将追踪信息输出到Windows PowerShell宿主. 此参数将会选择PSHost跟踪监听器.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
False
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-listenerOption <TraceOptions>
添加可选信息附件在每条跟踪记录的开头. 合法的取值为: None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, 和Callstack. "None"是默认值.
如果需要指定多个选项, 可以使用逗号将他们分割起来. 注意如果需要使用空白字符, 请使用引号将字符串保护起来, 例如"ProcessID,ThreadID".
如下列出此参数接受的合法输入:
· None
· LogicalOperationStack
· DateTime
· Timestamp
· ProcessId
· ThreadId
· Callstack
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
None
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-command <string>
指定在跟踪过程中执行的命令.
强制参数?
|
true
|
参数位置?
|
2
|
默认值
|
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-inputObject <psobject>
为被跟踪的表达式提供运行时需要的输入信息.
为被跟踪的表达式提供对象, 即可以将该对象存放在变量中, 也可以将通过管道来传递.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
|
允许从管道绑定输入?
|
true (根据输入值)
|
允许通配符扩展?
|
false
|
-argumentList <Object[]>
为被跟踪的命令指定需要的参数和参数值. 此特性非常适合调试动态参数的情况.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-force <SwitchParameter>
在不破坏安全前提下, 能够避免组织命令执行成功的限制条件. 例如, Force参数将会对只读属性的文件进行覆盖, 或者创建在文件名中不存在的目录, 但是它不会试图改变权限.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
False
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
<公共参数>
此命令支持公共参数: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 更多信息, 输入, "get-help about_commonparameters".
输入类型
用来表示被跟踪的命令或表达式的对象
返回类型
表达式或命令的输出结果
注意
更多信息, 输入"Get-Help Trace-Command -detailed".需要技术信息, 输入"Get-Help Trace-Command -full".
跟踪是开发人员用来debug和refine程序的方法. 处于跟踪时, 程序将会输出程序内部每一步的详细执行信息.
Windows PowerShell跟踪cmdlets设计用来帮助Windows PowerShell开发人员, 当然所有用户都能够使用这些工具. 它们允许你检视PowerShell功能的各个方面.
要获得Windows PowerShell中允许跟踪的组件, 输入"Get-Help Get-TraceSource."
“跟踪源(trace source)”是Windows PowerShell组件的一个组成部分, 此部分作用为管理跟踪和产生该组件相关跟踪信息. 要跟踪一个组件, 你要确定它的跟踪源.
“跟踪监听器(trace listener)”接收跟踪产生的输出并显示给使用者. 你能够选择将跟踪信息传递给: 用户态或内核态的调试器, 传递给宿主或控制台, 输出到文件, 输出到从类System.Diagnostics.TraceListener所产生的监听实例.
当你使用Command的参数组合时, Windows PowerShell处理该命令, 就好像该命令在管道中执行一样. 例如, 命令将不会对输入的每一个对象重复执行. (译者注: 输入如果是数组, 将会被当作一个数组对象传递给命令, 不会将该数组拆开)
Name, Expression, Option, 和Command形参都是可选择的. 如果你不提供这些形参名, 则未命名的实参必须按照顺序: Name, Expression, Option或者Name, Command, Option . 如果你提供了形参的名称, 实参可以按照任意的顺序被提供. (译者注: 关于形参parameter和实参argument可以参考本人的翻译文章)
例1
C:/PS>trace-command -name metadata,parameterbinding,cmdlet -expression {get-process notepad} -pshost
此命令对于表达式"get-process notepad", 开始一个元信息(metadata)处理, 参数绑定(parameter binding), 和cmdlet创建与销毁的跟踪. 使用Name参数来指定跟踪源, Expression参数指定命令, PSHost指出将输出发送到控制台. 因为此命令没有指出跟踪选项和监听选项, 命令将会使用默认值, 跟踪选项设置为"All", 监听选项设置为"None".
例2
C:/PS>trace-command -name commandprocessor,pipelineprocessor -command get-alias -argumentlist "ghy" -option executionflow -listenerOption "timestamp,callstack" -filepath c:/ps-test/debug.txt
此命令对于cmdlet "get-alias cd", 开始一个命令处理器(command processor)和管道线处理器(pipeline processor)的跟踪. Name指定跟踪源, Command参数指出要跟踪的命令, ArgumentList参数指出命令Get-Alias使用的参数, Option指出跟踪选项, ListenerOption指定了额外信息在跟踪信息之前输出. FilePath要求将跟踪信息输出到文件Debug.txt.
例3
C:/PS>$a = "i*"
trace-command parameterbinding {get-alias $input} -pshost -inputobject $a
当PowerShell处理Get-Alias表达式处理从管道线读取输入信息时, 这些命令跟踪了Windows PowerShell进行参数绑定操作的行为.
Trace-Command命令中, 参数InputObject为被跟踪的表达式传递了一个对象.
第一个命令将字符串"i*"存储在变量$a中. 第二个命令使用Trace-Command cmdlet, 并指出了跟踪源ParameterBinding. 参数PSHost将跟踪信息输出到控制台.
被处理的表达式为"get-alias $input", 其中的$input变量关联着InputObject参数. InputObject参数的变量值$a将被传递给被跟踪的表达式. 实际上, 跟踪过程中的表达式等价于"get-alias -inputobject $a"或者"$a | get-alias".
相关链接
Get-TraceSource
Set-TraceSource