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


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

При указании параметра Step автоматически устанавливается уровень трассировки 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

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