Trace-Command
Mengonfigurasi dan memulai jejak ekspresi atau perintah yang ditentukan.
Sintaks
Trace-Command
[-InputObject <PSObject>]
[-Name] <String[]>
[[-Option] <PSTraceSourceOptions>]
[-Expression] <ScriptBlock>
[-ListenerOption <TraceOptions>]
[-FilePath <String>]
[-Force]
[-Debugger]
[-PSHost]
[<CommonParameters>]
Trace-Command
[-InputObject <PSObject>]
[-Name] <String[]>
[[-Option] <PSTraceSourceOptions>]
[-Command] <String>
[-ArgumentList <Object[]>]
[-ListenerOption <TraceOptions>]
[-FilePath <String>]
[-Force]
[-Debugger]
[-PSHost]
[<CommonParameters>]
Deskripsi
Trace-Command
Cmdlet mengonfigurasi dan memulai jejak ekspresi atau perintah yang ditentukan.
Ini berfungsi seperti Set-TraceSource, kecuali hanya berlaku untuk perintah yang ditentukan.
Contoh
Contoh 1: Melacak pemrosesan metadata, pengikatan parameter, dan ekspresi
Contoh ini memulai jejak pemrosesan metadata, pengikatan parameter, dan pembuatan cmdlet dan penghancuran Get-Process Notepad
ekspresi.
Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost
Ini menggunakan parameter Nama untuk menentukan sumber pelacakan, parameter Ekspresi untuk menentukan perintah, dan parameter PSHost untuk mengirim output ke konsol. Karena tidak menentukan opsi pelacakan atau opsi pendengar, perintah menggunakan default:
- Semua untuk opsi pelacakan
- Tidak ada untuk opsi pendengar
Contoh 2: Melacak tindakan operasi ParameterBinding
Contoh ini melacak tindakan operasi ParameterBinding PowerShell saat memproses Get-Alias
ekspresi yang mengambil input dari alur.
$A = "i*"
Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A
Dalam Trace-Command
, parameter InputObject meneruskan objek ke ekspresi yang sedang diproses selama pelacakan.
Perintah pertama menyimpan string i*
dalam $A
variabel. Perintah kedua menggunakan Trace-Command
cmdlet dengan sumber pelacakan ParameterBinding. Parameter PSHost mengirimkan output ke konsol.
Ekspresi yang sedang diproses adalah Get-Alias $Input
, di mana $Input
variabel dikaitkan dengan parameter InputObject . Parameter InputObject meneruskan variabel $A
ke ekspresi. Akibatnya, perintah yang sedang diproses selama pelacakan adalah Get-Alias -InputObject $A" or "$A | Get-Alias
.
Contoh 3: Melacak operasi ParameterBinding untuk perintah asli
PowerShell 7.2 menambahkan PSNativeCommandArgumentPassing
fitur eksperimental. Fitur ini menambahkan kemampuan untuk melacak pengikatan parameter untuk perintah asli. Contoh berikut menunjukkan cara PowerShell mengurai argumen baris perintah untuk perintah TestExe
asli .
$a = 'a" "b'
Trace-Command -PSHOST -Name ParameterBinding { TestExe -echoargs $a 'c" "d' e" "f }
DEBUG: 2023-02-27 14:20:45.3975 ParameterBinding Information: 0 : BIND NAMED native application line args [C:\Public\Toolbox\TestExe\testexe.exe]
DEBUG: 2023-02-27 14:20:45.3978 ParameterBinding Information: 0 : BIND cmd line arg [-echoargs] to position [0]
DEBUG: 2023-02-27 14:20:45.3979 ParameterBinding Information: 0 : BIND cmd line arg [a" "b] to position [1]
DEBUG: 2023-02-27 14:20:45.3980 ParameterBinding Information: 0 : BIND cmd line arg [c" "d] to position [2]
DEBUG: 2023-02-27 14:20:45.3982 ParameterBinding Information: 0 : BIND cmd line arg [e f] to position [3]
DEBUG: 2023-02-27 14:20:47.6092 ParameterBinding Information: 0 : CALLING BeginProcessing
Untuk informasi selengkapnya, lihat Menggunakan fitur eksperimental.
Parameter
-ArgumentList
Menentukan parameter dan nilai parameter untuk perintah yang sedang dilacak. Alias untuk ArgumentList adalah Args. Fitur ini berguna untuk men-debug parameter dinamis.
Untuk informasi selengkapnya tentang perilaku ArgumentList, lihat about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Command
Menentukan perintah yang sedang diproses selama pelacakan.
Saat Anda menggunakan parameter ini, PowerShell memproses perintah sama seperti yang akan diproses dalam alur. Misalnya, penemuan perintah tidak diulang untuk setiap objek masuk.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Debugger
Menunjukkan bahwa cmdlet mengirim output jejak ke debugger. Anda dapat melihat output dalam debugger mode pengguna atau mode kernel atau di Visual Studio. Parameter ini juga memilih pendengar jejak default.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Expression
Menentukan ekspresi yang sedang diproses selama pelacakan. Sertakan ekspresi dalam tanda kurung kurawal ({}
).
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Menentukan file tempat cmdlet mengirim output jejak. Parameter ini juga memilih pendengar pelacakan file.
Type: | String |
Aliases: | PSPath, Path |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Memaksa perintah untuk dijalankan tanpa meminta konfirmasi pengguna. Digunakan dengan parameter FilePath . Bahkan menggunakan parameter Force , cmdlet tidak dapat mengambil alih pembatasan keamanan.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Menentukan input ke ekspresi yang sedang diproses selama pelacakan. Anda dapat memasukkan variabel yang mewakili input yang diterima ekspresi, atau meneruskan objek melalui alur.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ListenerOption
Menentukan data opsional ke awalan setiap pesan jejak dalam output. Nilai yang dapat diterima untuk parameter ini adalah:
None
LogicalOperationStack
DateTime
Timestamp
ProcessId
ThreadId
Callstack
None
adalah defaultnya.
Nilai-nilai ini didefinisikan sebagai enumerasi berbasis bendera. Anda dapat menggabungkan beberapa nilai bersama-sama untuk mengatur beberapa bendera menggunakan parameter ini. Nilai dapat diteruskan ke parameter ListenerOption sebagai array nilai atau sebagai string yang dipisahkan koma dari nilai tersebut. Cmdlet akan menggabungkan nilai menggunakan operasi biner-OR. Meneruskan nilai sebagai array adalah opsi paling sederhana dan juga memungkinkan Anda menggunakan penyelesaian tab pada nilai.
Type: | TraceOptions |
Accepted values: | None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Menentukan array komponen PowerShell yang dilacak. Masukkan nama sumber pelacakan dari setiap komponen. Kartubebas diizinkan. Untuk menemukan sumber pelacakan di komputer Anda, ketik Get-TraceSource
.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Option
Menentukan jenis peristiwa yang dilacak. Nilai yang dapat diterima untuk parameter ini adalah:
None
Constructor
Dispose
Finalizer
Method
Property
Delegates
Events
Exception
Lock
Error
Errors
Warning
Verbose
WriteLine
Data
Scope
ExecutionFlow
Assert
All
All
adalah defaultnya.
Nilai berikut adalah kombinasi dari nilai lain:
ExecutionFlow
:Constructor
, ,Finalizer
Dispose
,Method
,Delegates
,Events
,Scope
Data
:Constructor
,Dispose
,Finalizer
,Property
,Verbose
, ,WriteLine
Errors
:Error
,Exception
Nilai-nilai ini didefinisikan sebagai enumerasi berbasis bendera. Anda dapat menggabungkan beberapa nilai bersama-sama untuk mengatur beberapa bendera menggunakan parameter ini. Nilai dapat diteruskan ke parameter Opsi sebagai array nilai atau sebagai string yang dipisahkan koma dari nilai tersebut. Cmdlet akan menggabungkan nilai menggunakan operasi biner-OR. Meneruskan nilai sebagai array adalah opsi paling sederhana dan juga memungkinkan Anda menggunakan penyelesaian tab pada nilai.
Type: | PSTraceSourceOptions |
Accepted values: | None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PSHost
Menunjukkan bahwa cmdlet mengirim output jejak ke host PowerShell. Parameter ini juga memilih pendengar jejak PSHost.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
Anda dapat menyalurkan objek yang mewakili input ke ekspresi ke cmdlet ini.
Output
Cmdlet ini tidak mengembalikan output sendiri. Perintah yang dilacak dapat mengembalikan output. Cmdlet ini menulis jejak perintah ke aliran debug.
Catatan
Pelacakan adalah metode yang digunakan pengembang untuk men-debug dan menyempurnakan program. Saat melacak, program menghasilkan pesan terperinci tentang setiap langkah dalam pemrosesan internalnya. Cmdlet pelacakan PowerShell dirancang untuk membantu pengembang PowerShell, tetapi tersedia untuk semua pengguna. Mereka memungkinkan Anda memantau hampir setiap aspek fungsionalitas shell.
Sumber pelacakan adalah bagian dari setiap komponen PowerShell yang mengelola pelacakan dan menghasilkan pesan pelacakan untuk komponen. Untuk melacak komponen, Anda mengidentifikasi sumber pelacakannya.
Gunakan Get-TraceSource
untuk melihat daftar komponen PowerShell yang diaktifkan untuk pelacakan.
Pendengar jejak menerima output pelacakan dan menampilkannya kepada pengguna. Anda dapat memilih untuk mengirim data pelacakan ke debugger mode pengguna atau mode kernel, ke host atau konsol, ke file, atau ke pendengar kustom yang berasal dari kelas System.Diagnostics.TraceListener .
Link Terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk