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


Set-PSDebug

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

Синтаксис

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

Описание

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

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

Примеры

Пример 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 переводится в строгий режим и предпринимается попытка получить доступ к переменной без присвоенного значения.

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

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Step

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

При указании параметра Шаг автоматически устанавливается уровень трассировки 1.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Strict

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Trace

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

Ниже приведены допустимые значения для этого параметра.

  • 0: отключите трассировку скриптов.
  • 1. Трассировка строк скрипта по мере их выполнения.
  • 2. Трассировка строк скриптов, назначений переменных, вызовов функций и скриптов.
Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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

None

Вы не можете конвейерировать входные данные для этого командлета.

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

None

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