Trace-Command
지정된 식 또는 명령의 추적을 구성하고 시작합니다.
구문
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>]
Description
cmdlet은 Trace-Command
지정된 식 또는 명령의 추적을 구성하고 시작합니다.
지정한 명령에만 적용된다는 점을 제외하고 Set-TraceSource와 동일하게 작동합니다.
예제
예제 1: 추적 메타데이터 처리, 매개 변수 바인딩 및 식
이 예제에서는 메타데이터 처리, 매개 변수 바인딩 및 cmdlet 생성 및 식의 소멸 추적을 시작합니다 Get-Process Notepad
.
Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost
Name 매개 변수를 사용하여 추적 원본을 지정하고, Expression 매개 변수를 사용하여 명령을 지정하고, PSHost 매개 변수를 사용하여 출력을 콘솔로 보냅니다. 추적 옵션 또는 수신기 옵션을 지정하지 않으므로 이 명령은 기본값을 사용합니다.
- 추적 옵션에 대한 모든 항목
- 수신기 옵션에 대한 없음
예제 2: ParameterBinding 작업의 작업 추적
이 예제에서는 파이프라인에서 입력을 가져오는 식을 처리하는 Get-Alias
동안 PowerShell의 ParameterBinding 작업의 작업을 추적합니다.
$A = "i*"
Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A
In에서 Trace-Command
InputObject 매개 변수는 추적 중에 처리되는 식에 개체를 전달합니다.
첫 번째 명령은 변수에 문자열 i*
을 저장합니다 $A
. 두 번째 명령은 ParameterBinding 추적 원본과 함께 cmdlet을 사용합니다 Trace-Command
. PSHost 매개 변수는 출력을 콘솔로 보냅니다.
처리되는 식은 Get-Alias $Input
변수가 $Input
InputObject 매개 변수와 연결된 식입니다. InputObject 매개 변수는 변수 $A
를 식에 전달합니다. 실제로 추적 중에 처리되는 명령은 .입니다 Get-Alias -InputObject $A" or "$A | Get-Alias
.
예제 3: 네이티브 명령에 대한 ParameterBinding 추적 작업
PowerShell 7.3은 네이티브 명령에 대한 매개 변수 바인딩을 추적하는 기능을 추가했습니다. 다음 예제에서는 PowerShell이 네이티브 명령에 TestExe
대한 명령줄 인수를 구문 분석하는 방법을 보여 줍니다.
$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
매개 변수
-ArgumentList
추적 중인 명령에 대한 매개 변수 및 매개 변수 값을 지정합니다. ArgumentList의 별칭은 Args입니다. 이 기능은 동적 매개 변수를 디버깅하는 데 유용합니다.
ArgumentList의 동작에 대한 자세한 내용은 about_Splatting 참조하세요.
형식: | Object[] |
별칭: | Args |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Command
추적 중에 처리되는 명령을 지정합니다.
이 매개 변수를 사용하는 경우 PowerShell은 파이프라인에서 처리되는 것처럼 명령을 처리합니다. 예를 들어 들어오는 각 개체에 대해 명령 검색이 반복되지 않습니다.
형식: | String |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Debugger
cmdlet이 추적 출력을 디버거로 보내도록 나타냅니다. 모든 사용자 모드 또는 커널 모드 디버거 또는 Visual Studio에서 출력을 볼 수 있습니다. 이 매개 변수는 기본 추적 수신기도 선택합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Expression
추적 중에 처리되는 식을 지정합니다. 식을 중괄호({}
)로 묶습니다.
형식: | ScriptBlock |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-FilePath
cmdlet이 추적 출력을 보내는 파일을 지정합니다. 이 매개 변수는 파일 추적 수신기도 선택합니다.
형식: | String |
별칭: | PSPath, Path |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Force
사용자 확인을 요청하지 않고 명령을 강제 실행합니다. FilePath 매개 변수와 함께 사용됩니다. Force 매개 변수를 사용하더라도 cmdlet은 보안 제한을 재정의할 수 없습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-InputObject
추적 중에 처리되는 식에 대한 입력을 지정합니다. 식에서 허용하는 입력을 나타내는 변수를 입력하거나 파이프라인을 통해 개체를 전달할 수 있습니다.
형식: | PSObject |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-ListenerOption
출력에 있는 각 추적 메시지의 접두사에 대한 선택적 데이터를 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.
None
LogicalOperationStack
DateTime
Timestamp
ProcessId
ThreadId
Callstack
기본값은 None
입니다.
이러한 값은 플래그 기반 열거형으로 정의됩니다. 이 매개 변수를 사용하여 여러 값을 결합하여 여러 플래그를 설정할 수 있습니다. 값은 값 배열 또는 해당 값의 쉼표로 구분된 문자열로 ListenerOption 매개 변수에 전달될 수 있습니다. cmdlet은 이진 OR 연산을 사용하여 값을 결합합니다. 값을 배열로 전달하는 것이 가장 간단한 옵션이며 값에 대한 탭 완성을 사용할 수도 있습니다.
형식: | TraceOptions |
허용되는 값: | None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Name
추적되는 PowerShell 구성 요소의 배열을 지정합니다. 각 구성 요소의 추적 원본 이름을 입력합니다. 와일드카드가 허용됩니다. 컴퓨터에서 추적 원본을 찾으려면 .를 입력 Get-TraceSource
합니다.
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Option
추적되는 이벤트의 유형을 결정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.
None
Constructor
Dispose
Finalizer
Method
Property
Delegates
Events
Exception
Lock
Error
Errors
Warning
Verbose
WriteLine
Data
Scope
ExecutionFlow
Assert
All
기본값은 All
입니다.
다음 값은 다른 값의 조합입니다.
ExecutionFlow
:Constructor
,Dispose
, ,Method
Finalizer
,Delegates
,Events
Scope
Data
:Constructor
,Dispose
,Finalizer
,Property
,Verbose
WriteLine
Errors
:Error
,Exception
이러한 값은 플래그 기반 열거형으로 정의됩니다. 이 매개 변수를 사용하여 여러 값을 결합하여 여러 플래그를 설정할 수 있습니다. 값은 값 배열 또는 해당 값의 쉼표로 구분된 문자열로 Option 매개 변수에 전달할 수 있습니다. cmdlet은 이진 OR 연산을 사용하여 값을 결합합니다. 값을 배열로 전달하는 것이 가장 간단한 옵션이며 값에 대한 탭 완성을 사용할 수도 있습니다.
형식: | PSTraceSourceOptions |
허용되는 값: | 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 |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-PSHost
cmdlet이 추적 출력을 PowerShell 호스트로 보내도록 나타냅니다. 이 매개 변수는 PSHost 추적 수신기도 선택합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
입력을 나타내는 개체를 이 cmdlet에 파이프할 수 있습니다.
출력
이 cmdlet은 자체 출력을 반환하지 않습니다. 추적된 명령은 출력을 반환할 수 있습니다. 이 cmdlet은 명령 추적을 디버그 스트림에 씁니다.
참고
추적은 개발자가 프로그램을 디버그하고 구체화하는 데 사용하는 방법입니다. 추적하면 프로그램에서 내부 프로세스의 각 단계에 대한 세부 메시지를 생성합니다. PowerShell 추적 cmdlet은 PowerShell 개발자를 지원하도록 설계되었지만 모든 사용자가 사용할 수 있습니다. 셸 기능의 거의 모든 측면을 모니터링할 수 있습니다.
추적 원본은 추적을 관리하고 구성 요소에 대한 추적 메시지를 생성하는 각 PowerShell 구성 요소의 일부입니다. 구성 요소를 추적하려면 해당 추적 원본을 식별합니다.
추적을 사용하도록 설정된 PowerShell 구성 요소 목록을 확인하는 데 사용합니다 Get-TraceSource
.
추적 수신기는 추적의 출력을 받아 사용자에게 표시합니다. 추적 데이터를 사용자 모드 또는 커널 모드 디버거, 호스트 또는 콘솔, 파일 또는 System.Diagnostics.TraceListener 클래스에서 파생된 사용자 지정 수신기로 보내도록 선택할 수 있습니다.
관련 링크
PowerShell