Trace-Command (Microsoft.PowerShell.Utility)
Trace-Command
- Модуль:
- Microsoft.PowerShell.Utility
Настраивает и запускает трассировку указанного выражения или команды.
Синтаксис
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>]Описание
Командлет Trace-Command настраивает и запускает трассировку указанного выражения или команды. Он работает аналогично Set-TraceSource, за исключением того, что применяется только к указанной команде.
Примеры
Пример 1. Обработка метаданных трассировки, привязка параметров и выражение
В этом примере начинается трассировка обработки метаданных, привязки параметров, а также создания и уничтожения командлета выражения Get-Process Notepad.
Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHostОн использует параметр Name для указания источников трассировки, параметр Expression для указания команды и параметр PSHost для отправки выходных данных в консоль. Поскольку она не указывает никаких параметров трассировки или параметров прослушивателя, команда использует значения по умолчанию:
- Все для вариантов отслеживания
- Нет для опций прослушивателя
Пример 2. Отслеживание действий операций привязки параметров.
В этом примере отслеживаются действия операций ParameterBinding PowerShell при обработке выражения Get-Alias, которое принимает входные данные из конвейера.
$A = "i*"
Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $AВ Trace-Command параметр InputObject передает объект в выражение, которое обрабатывается во время трассировки.
Первая команда сохраняет строку i* в переменной $A. Вторая команда использует командлет Trace-Command с источником трассировки ParameterBinding. Параметр PSHost отправляет выходные данные на консоль.
Обрабатываемое выражение — Get-Alias $Input, где переменная $Input связана с параметром InputObject. Параметр InputObject передает в выражение переменную $A. По сути, во время трассировки обрабатывается команда Get-Alias -InputObject $A» или «$A | Получить-Псевдоним.
Пример 3. Отслеживание операций привязки параметров для собственных команд
В 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
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Command
Указывает команду, которая обрабатывается во время трассировки.
Когда вы используете этот параметр, PowerShell обрабатывает команду так же, как если бы она обрабатывалась в конвейере. Например, обнаружение команд не повторяется для каждого входящего объекта.
- Тип :
String
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Debugger
Указывает, что командлет отправляет выходные данные трассировки в отладчик. Вы можете просмотреть выходные данные в любом отладчике пользовательского режима или режима ядра или в Visual Studio. Этот параметр также выбирает прослушиватель трассировки по умолчанию.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Expression
Указывает выражение, которое обрабатывается во время трассировки. Заключите выражение в фигурные скобки ({}).
- Тип :
ScriptBlock
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-FilePath
Указывает файл, в который командлет отправляет выходные данные трассировки. Этот параметр также выбирает прослушиватель трассировки файла.
- Тип :
String
- Псевдонимы:
PSPath, Path
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Force
Принудительно запускает команду без запроса подтверждения пользователя. Используется с параметром FilePath. Даже при использовании параметра Force командлет не может обойти ограничения безопасности.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputObject
Указывает входные данные для выражения, которое обрабатывается во время трассировки. Вы можете ввести переменную, которая представляет входные данные, которые принимает выражение, или передать объект через конвейер.
- Тип :
PSОбъект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-ListenerOption
Указывает дополнительные данные в префиксе каждого сообщения трассировки в выходных данных. Допустимые значения этого параметра:
NoneLogicalOperationStackDateTimeTimestampProcessIdThreadIdCallstackНет — значение по умолчанию.
Эти значения определяются как перечисление на основе флагов. С помощью этого параметра вы можете объединить несколько значений, чтобы установить несколько флагов. Значения можно передавать в параметр ListenerOption как массив значений или как строку этих значений, разделенную запятыми. Командлет объединит значения с помощью операции двоичного ИЛИ. Передача значений в виде массива — самый простой вариант, который также позволяет использовать для значений табуляцию.
- Тип :
TraceOptions
- Принятые значения:
Нет, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Name
Указывает массив отслеживаемых компонентов PowerShell. Введите имя источника трассировки каждого компонента. Подстановочные знаки разрешены. Чтобы найти источники трассировки на вашем компьютере, введите Get-TraceSource.
- Тип :
String[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Option
Определяет тип отслеживаемых событий. Допустимые значения этого параметра:
NoneConstructorDisposeFinalizerMethodPropertyDelegatesEventsExceptionLockErrorErrorsWarningVerboseWriteLineDataScopeExecutionFlowAssertAllВсе — значение по умолчанию.
Следующие значения представляют собой комбинации других значений:
ExecutionFlow:Конструктор,Dispose,Финализатор,Метод,Делегаты,События,ОбластьДанные:Конструктор,Dispose,Финализатор,Свойство,Verbose,WriteLineОшибки:Ошибка,Исключение
Эти значения определяются как перечисление на основе флагов. С помощью этого параметра вы можете объединить несколько значений, чтобы установить несколько флагов. Значения можно передавать в параметр Option как массив значений или как строку этих значений, разделенную запятыми. Командлет объединит значения с помощью операции двоичного ИЛИ. Передача значений в виде массива — самый простой вариант, который также позволяет использовать для значений табуляцию.
- Тип :
PSTraceSourceOptions
- Принятые значения:
Нет, Конструктор, Удаление, Финализатор, Метод, Свойство, Делегаты, События, Исключение, Блокировка, Ошибка, Ошибки, Предупреждение, Подробный, WriteLine, Данные, Область, ExecutionFlow, Утверждать, Все
- Позиция:
2
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-PSHost
Указывает, что командлет отправляет выходные данные трассировки на узел PowerShell. Этот параметр также выбирает прослушиватель трассировки PSHost.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
PSObject
В этот командлет можно передать объекты, представляющие входные данные для выражения.
Выходы
PSObject
Этот командлет не возвращает собственных результатов. Отслеживаемая команда может возвращать выходные данные. Этот командлет записывает трассировку команды в поток отладки.
Примечания
Трассировка — это метод, который разработчики используют для отладки и улучшения программ. При трассировке программа генерирует подробные сообщения о каждом этапе своей внутренней обработки. Командлеты трассировки PowerShell предназначены для помощи разработчикам PowerShell, но они доступны всем пользователям. Они позволяют отслеживать практически все аспекты функциональности оболочки.
Источник трассировки — это часть каждого компонента PowerShell, которая управляет трассировкой и генерирует сообщения трассировки для компонента. Чтобы отслеживать компонент, вы определяете его источник трассировки.
Используйте Get-TraceSource, чтобы просмотреть список компонентов PowerShell, для которых включена трассировка.
Прослушиватель трассировки получает выходные данные трассировки и отображает их пользователю. Вы можете выбрать отправку данных трассировки в отладчик пользовательского режима или режима ядра, на хост или консоль, в файл или в пользовательский прослушиватель, производный от класса System.Diagnostics.TraceListener. .