Настраивает и запускает трассировку указанного выражения или команды.
Синтаксис
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 настраивает и запускает трассировку указанного выражения или команды. Он аналогичен командлету 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
Позволяет командлету добавлять данные трассировки в файл, доступный только для чтения. Используется с параметром FilePath. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.
Обязательно? |
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>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.Management.Automation.PSObject Объекты, представляющие ввод выражения можно передавать командлету Trace-Command по конвейеру. |
Выходные данные |
System.Management.Automation.PSObject Возвращает трассировку команды в потоке отладки. |
Примечания
Трассировка — это метод, используемый разработчиками для отладки и изменения программы. Во время трассировки программа формирует подробные сообщения о каждом шаге внутренней обработки.
Командлеты трассировки Windows PowerShell созданы для разработчиков Windows PowerShell, но доступны всем пользователям. Они позволяют отслеживать практически все аспекты функциональности оболочки.
Чтобы найти компоненты Windows PowerShell, поддерживающие трассировку, введите команду Get-Help Get-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". Параметр 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 Описание ----------- Эта команда выполняет трассировку действий операций ParameterBinding оболочки Windows PowerShell при обработке выражения Get-Alias, принимающего ввод по конвейеру. В команде Trace-Command параметр InputObject передает объект выражению, обрабатываемому во время трассировки. Первая команда сохраняет строку "i*" в переменной $a. Во второй команде используется командлет Trace-Command с источником трассировки ParameterBinding. Параметр PSHost отправляет вывод на консоль. Обрабатываемым выражением является "get-alias $input", в котором переменная $input связана с параметром InputObject. Параметр InputObject передает этому выражению переменную $a. В результате во время трассировки обрабатывается команда "get-alias -inputobject $a" или "$a | get-alias".