Trace-Command
設定並啟動指定之表示式或命令的追蹤。
語法
Trace-Command
[-Name] <String[]>
[-Expression] <ScriptBlock>
[[-Option] <PSTraceSourceOptions>]
[-InputObject <PSObject>]
[-ListenerOption <TraceOptions>]
[-FilePath <String>]
[-Force]
[-Debugger]
[-PSHost]
[<CommonParameters>]
Trace-Command
[-Name] <String[]>
[-Command] <String>
[[-Option] <PSTraceSourceOptions>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-ListenerOption <TraceOptions>]
[-FilePath <String>]
[-Force]
[-Debugger]
[-PSHost]
[<CommonParameters>]
Description
Trace-Command Cmdlet 會設定並啟動指定表達式或命令的追蹤。 它的運作方式就像 Set-TraceSource,不同之處在於它只適用於指定的命令。
範例
範例 1:追蹤元數據處理、參數系結和表達式
PS C:\> Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost
此命令會啟動元數據處理、參數係結和 Cmdlet 的追蹤,並建立和銷毀 Get-Process Notepad
表示式。
它會使用 Name 參數來指定追蹤來源、Expression 參數來指定命令,以及 PSHost 參數將輸出傳送至控制台。
因為它未指定任何追蹤選項或接聽程式選項,所以命令會使用 defaults-All 做為追蹤選項,而接聽程式選項則為 None。
範例 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[] |
別名: | Args |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Command
指定追蹤期間正在處理的命令。
類型: | String |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Debugger
指出 Cmdlet 會將追蹤輸出傳送至調試程式。 您可以在任何使用者模式或核心模式調試程式或 Visual Studio 中檢視輸出。 此參數也會選取預設追蹤接聽程式。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Expression
指定追蹤期間正在處理的表達式。 以大括弧括住表達式({})。
類型: | ScriptBlock |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-FilePath
指定 Cmdlet 傳送追蹤輸出的檔案。 此參數也會選取檔案追蹤接聽程式。
類型: | String |
別名: | PSPath |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Force
強制命令執行,而不要求使用者確認。 與 FilePath 參數搭配使用。 即使使用 Force 參數,Cmdlet 也無法覆寫安全性限制。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
指定追蹤期間正在處理的運算式輸入。
您可以輸入代表表達式所接受之輸入的變數,或透過管線傳遞物件。
類型: | PSObject |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-ListenerOption
指定輸出中每個追蹤訊息前置詞的選擇性數據。 此參數可接受的值為:
- 沒有
- LogicalOperationStack
- DateTime
- 時間戳
- ProcessId
- ThreadId
- Callstack
None 是預設值。
若要指定多個選項,請以逗號分隔它們,但不含空格,並以引弧括住它們,例如 “ProcessID,ThreadID”。
類型: | TraceOptions |
接受的值: | None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Name
指定追蹤的 Windows PowerShell 元件數位。
輸入每個元件的追蹤來源名稱。
允許通配符。
若您在您的電腦上尋找追蹤來源,請輸入 Get-TraceSource
。
類型: | String[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Option
指定追蹤的事件類型。 此參數可接受的值為:
- 沒有
- 構造 函數
- 處理
- 完成項
- 方法
- 財產
- 代表
- 事件
- 例外
- 鎖
- 錯誤
- 錯誤
- 警告
- 詳細
- WriteLine
- 數據
- 範圍
- ExecutionFlow
- 斷言
- 都
全部都是預設值。
下列值是其他值的組合:
- ExecutionFlow:(建構函式、處置、完成項、方法、委派、事件和範圍)
- 數據:(建構函式、處置、完成項、屬性、詳細資訊和 WriteLine)
- 錯誤:(錯誤和例外狀況)。
若要指定多個選項,請以逗號分隔它們,但沒有空格,並以引號括住它們,例如“建構函式,處置”。
類型: | PSTraceSourceOptions |
接受的值: | None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All |
Position: | 2 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-PSHost
指出 Cmdlet 會將追蹤輸出傳送至 Windows PowerShell 主機。 此參數也會選取 PSHost 追蹤接聽程式。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將代表表示式輸入的物件傳送至 Trace-Command。
輸出
傳回偵錯數據流中的命令追蹤。
備註
追蹤是開發人員用來偵錯和精簡程式的方法。 追蹤時,程式會產生其內部處理中每個步驟的詳細訊息。
Windows PowerShell 追蹤 Cmdlet 是設計來協助 Windows PowerShell 開發人員,但可供所有使用者使用。 它們可讓您監視殼層功能的幾乎所有層面。
若要尋找啟用追蹤的 Windows PowerShell 元件,請輸入
Get-Help Get-TraceSource
。追蹤來源是管理追蹤及產生元件追蹤訊息之每個 Windows PowerShell 元件的一部分。 若要追蹤元件,您可以識別其追蹤來源。
追蹤接聽程式會接收追蹤的輸出,並將它顯示給使用者。 您可以選擇將追蹤數據傳送至使用者模式或內核模式調試程式、主機或控制台、檔案,或從 system.Diagnostics.TraceListener 類別衍生的自定義接聽程式。
當您使用 commandSet 參數集時,Windows PowerShell 會處理命令,就像在管線中處理一樣。 例如,不會針對每個傳入物件重複命令探索。
Name、Expression、Option和 Command 參數的名稱是選擇性的。 如果您省略參數名稱,則未命名的參數值必須依下列順序顯示:Name、Expression、Option 或 Name、CommandOption。 如果您包含參數名稱,參數可以依任何順序顯示。