共用方式為


Trace-Command

為指定的運算式或命令設定並啟動追蹤。

語法

Trace-Command [-Command] <string> [-ArgumentList <Object[]>] [-Name] <string[]> [[-Option] {<None> | <Constructor> | <Dispose> | <Finalizer> | <Method> | <Property> | <Delegates> | <Events> | <Exception> | <Lock> | <Error> | <Errors> | <Warning> | <Verbose> | <WriteLine> | <Data> | <Scope> | <ExecutionFlow> | <Assert> | <All>}] [-Debugger] [-FilePath <string>] [-Force] [-InputObject <psobject>] [-ListenerOption {<None> | <LogicalOperationStack> | <DateTime> | <Timestamp> | <ProcessId> | <ThreadId> | <Callstack>}] [-PSHost] [<CommonParameters>]

Trace-Command [-Expression] <scriptblock> [-Name] <string[]> [[-Option] {<None> | <Constructor> | <Dispose> | <Finalizer> | <Method> | <Property> | <Delegates> | <Events> | <Exception> | <Lock> | <Error> | <Errors> | <Warning> | <Verbose> | <WriteLine> | <Data> | <Scope> | <ExecutionFlow> | <Assert> | <All>}] [-Debugger] [-FilePath <string>] [-Force] [-InputObject <psobject>] [-ListenerOption {<None> | <LogicalOperationStack> | <DateTime> | <Timestamp> | <ProcessId> | <ThreadId> | <Callstack>}] [-PSHost] [<CommonParameters>]

描述

Trace-Command Cmdlet 會為指定的運算式或命令設定並啟動追蹤。它的作用類似 Set-TraceSource,但是只能套用到指定的命令。

參數

-ArgumentList <Object[]>

為追蹤的命令指定參數和參數值。ArgumentList 的別名為 Args。此功能特別有助於對動態參數進行偵錯。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Command <string>

指定追蹤期間所要處理的命令。

必要?

true

位置?

2

預設值

接受管線輸入?

false

接受萬用字元?

false

-Debugger

將追蹤輸出傳送至偵錯工具。可使用任何的使用者模式或核心模式偵錯工具,或在 Visual Studio 中檢視輸出。此參數也會選取預設的追蹤接聽程式。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Expression <scriptblock>

指定追蹤期間所要處理的運算式。將運算式置於大括號 ({}) 內。

必要?

true

位置?

2

預設值

接受管線輸入?

false

接受萬用字元?

false

-FilePath <string>

將追蹤輸出傳送到指定的檔案。此參數也會選取檔案追蹤接聽程式。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Force

允許此 Cmdlet 將追蹤資訊附加至唯讀的檔案。請搭配 FilePath 參數使用。即便使用 Force 參數,此 Cmdlet 也無法覆寫安全性限制。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-InputObject <psobject>

為追蹤期間處理的運算式提供輸入項。

可輸入代表運算式所接受之輸入項的變數,或透過管線傳遞物件。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-ListenerOption <TraceOptions>

在輸出中的每個追蹤訊息開頭加入選用性資料。有效的值包括 None、LogicalOperationStack、DateTime、Timestamp、ProcessId、ThreadId 和 Callstack。預設值為 "None"。

若要指定多重選項,請用逗號分隔選項,但不能包含空格,然後置於引號內,例如 "ProcessID,ThreadID"。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Name <string[]>

決定要追蹤的 Windows PowerShell 元件。輸入每個元件的追蹤來源的名稱。允許使用萬用字元。若要找出電腦上的追蹤來源,請輸入 "Get-TraceSource"。

必要?

true

位置?

1

預設值

接受管線輸入?

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 和 Scope)

-- Data:(Constructor、Dispose、Finalizer、Property、Verbose 和 WriteLine)

-- Errors:(Error 和 Exception)。

若要指定多重選項,請用逗號分隔選項,但不能包含空格,然後置於引號內,例如 "Constructor,Dispose"。

必要?

false

位置?

3

預設值

接受管線輸入?

false

接受萬用字元?

false

-PSHost

將追蹤輸出傳送至 Windows PowerShell 主機。此參數也會選取 PSHost 追蹤接聽程式。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.Management.Automation.PSObject

您可經由管道將代表運算式輸入的物件輸出至 Trace-Command。

輸出

System.Management.Automation.PSObject

在偵錯資料流中傳回命令追蹤。

附註

追蹤是開發人員用來偵錯和調整程式的一種方法。進行追蹤時,程式會產生詳細訊息列出每個內部處理步驟的相關資訊。

Windows PowerShell 追蹤 cmdlet 是專為輔助 Windows PowerShell 開發人員而設計,但所有的使用者皆可使用。這些 cmdlet 幾乎可以監視殼層每個層面的功能。

若要尋找啟用追蹤的 Windows PowerShell 元件,請輸入 "Get-HelpGet-TraceSource"。

「追蹤來源」是每個 Windows PowerShell 元件的一部分,負責管理追蹤並產生元件的追蹤訊息。若要追蹤元件,您必須識別元件的追蹤來源。

「追蹤接聽程式」則接收追蹤的輸出,並顯示輸出供使用者檢視。您可以選擇將追蹤資料傳送到使用者模式或核心模式偵錯工具、主機或主控台、檔案,或者傳送到衍生自 System.Diagnostics.TraceListener 類別的自訂接聽程式。

當您使用 Command 參數集時,Windows PowerShell 處理命令的方式就如同在管線中處理一般。例如,不會針對每個內送物件重複命令搜索。

Name、Expression、Option 和 Command 參數的名稱為選擇性。如果省略參數名稱,就必須依此順序列出未具名的參數值:Name、Expression、Option (或 Name)、Command、-Option。如果包含參數名稱,則可依任意順序列出參數。

範例 1

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

描述
-----------
這個命令會針對 "get-process notepad" 運算式之中繼資料處理、參數繫結以及 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:\test\debug.txt

描述
-----------
這個命令會在處理 "get-alias cd" 命令時,為命令處理程式和管線處理程式啟動追蹤。

它會使用 Name 參數指定追蹤來源、使用 Command 參數指定命令、使用 ArgumentList 參數指定 Get-Alias 命令的參數、使用 Option 參數指定追蹤選項,並使用 ListenerOption 參數指定追蹤訊息開頭中的欄位。FilePath 參數會將輸出傳送到 C:\Test\Debug.txt 檔案。





範例 3

C:\PS>$a = "i*"

C:\PS> trace-command parameterbinding {get-alias $input} -pshost -inputobject $a

描述
-----------
這些命令會在 Windows PowerShell 處理由管線取得輸入的 Get-Alias 運算式時,追蹤其 ParameterBinding 作業的動作。

在 Trace-Command 中,InputObject 參數會在追蹤期間將物件傳遞給處理中的運算式。

第一個命令將字串 "i*" 儲存在 $a 變數中。第二個命令會搭配 ParameterBinding 追蹤來源,使用 Trace-Command Cmdlet。PSHost 參數將輸出傳送到主控台。

正在處理中的運算式是 "get-alias $input",其中 $input 變數與 InputObject 參數相關聯。InputObject 參數會將變數 $a 傳遞給運算式。實際上,在追蹤期間所處理的命令為 "get-alias -inputobject $a" 或 "$a | get-alias"。





請參閱

概念

Get-TraceSource
Set-TraceSource