如下说明是翻译
: 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