Поделиться через


Set-PSDebug

Включает и отключает функции отладки скриптов, задает уровень трассировки и переключает строгий режим.

Синтаксис

Set-PSDebug
   [-Trace <Int32>]
   [-Step]
   [-Strict]
   [<CommonParameters>]
Set-PSDebug
   [-Off]
   [<CommonParameters>]

Описание

Командлет Set-PSDebug включает и отключает функции отладки скриптов, задает уровень трассировки и переключает строгий режим. По умолчанию функции отладки PowerShell отключены.

Если параметр трассировки имеет значение 1, каждая строка скрипта трассируется по мере выполнения. Если параметр имеет значение 2, задания переменных, вызовы функций и вызовы скриптов также трассируются. Если указан параметр шага, вам будет предложено перед выполнением каждой строки скрипта.

Примеры

Пример 1. Настройка уровня трассировки

В этом примере уровень трассировки устанавливается на 2, а затем запускается скрипт, отображающий числа 1, 2 и 3.

Set-PSDebug -Trace 2; foreach ($i in 1..3) {$i}

DEBUG:    1+ Set-PSDebug -Trace 2; foreach ($i in  >>>> 1..3) {$i}
DEBUG:     ! SET $foreach = 'IEnumerator'.
DEBUG:    1+ Set-PSDebug -Trace 2; foreach ( >>>> $i in 1..3) {$i}
DEBUG:     ! SET $i = '1'.
DEBUG:    1+ Set-PSDebug -Trace 2; foreach ($i in 1..3) { >>>> $i}
1
DEBUG:    1+ Set-PSDebug -Trace 2; foreach ( >>>> $i in 1..3) {$i}
DEBUG:     ! SET $i = '2'.
DEBUG:    1+ Set-PSDebug -Trace 2; foreach ($i in 1..3) { >>>> $i}
2
DEBUG:    1+ Set-PSDebug -Trace 2; foreach ( >>>> $i in 1..3) {$i}
DEBUG:     ! SET $i = '3'.
DEBUG:    1+ Set-PSDebug -Trace 2; foreach ($i in 1..3) { >>>> $i}
3
DEBUG:    1+ Set-PSDebug -Trace 2; foreach ( >>>> $i in 1..3) {$i}
DEBUG:     ! SET $foreach = ''.

Пример 2. Включение пошагового выполнения

Этот пример включает пошаговое выполнение, а затем запускает скрипт, отображающий числа 1, 2 и 3.

Set-PSDebug -Step; foreach ($i in 1..3) {$i}

Continue with this operation?
   1+ Set-PSDebug -Step; foreach ($i in  >>>> 1..3) {$i}
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A
DEBUG:    1+ Set-PSDebug -Step; foreach ($i in  >>>> 1..3) {$i}
1
2
3

Пример 3. Использование строгого режима

В этом примере PowerShell помещает PowerShell в строгий режим и пытается получить доступ к переменной, которая не имеет назначенного значения.

Set-PSDebug -Strict; $NewVar

The variable '$NewVar' cannot be retrieved because it has not been set.
At line:1 char:22
+ Set-PSDebug -Strict; $NewVar

Пример 4. Отключение функций отладки

В этом примере отключают все функции отладки, а затем запускается скрипт, отображающий числа 1, 2 и 3.

Set-PSDebug -Off; foreach ($i in 1..3) {$i}

1
2
3

Параметры

-Off

Отключает все функции отладки скрипта.

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Step

Включает пошаговое выполнение скрипта. Перед выполнением каждой строки PowerShell предложит остановить, продолжить или ввести новый уровень интерпретатора для проверки состояния скрипта.

Указание параметра шага автоматически задает уровень трассировки 1.

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Strict

Указывает, что переменные необходимо назначить значение, прежде чем ссылаться в скрипте. Если переменная ссылается перед назначением значения, PowerShell возвращает ошибку исключения. Это эквивалентно Set-StrictMode -Version 1. Дополнительные сведения см. в разделе Set-StrictMode.

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Trace

Задает уровень трассировки для каждой строки в скрипте. Каждая строка трассируется по мере выполнения.

Допустимые значения для этого параметра приведены следующим образом:

  • 0. Отключите трассировку скрипта.
  • 1. Трассировка строк скриптов при выполнении.
  • 2. Трассировка строк скриптов, назначений переменных, вызовов функций и скриптов.
Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

None

Невозможно передать объекты в этот командлет.

Выходные данные

None

Этот командлет не возвращает выходные данные.