Устанавливает точку останова на строке, команде или переменной.

Синтаксис

Set-PSBreakpoint -Command <string[]> [[-Script] <string[]>] [-Action <scriptblock>] [<CommonParameters>]

Set-PSBreakpoint [-Script] <string[]> [-Line] <Int32[]> [[-Column] <int>] [-Action <scriptblock>] [<CommonParameters>]

Set-PSBreakpoint -Variable <string[]> [[-Script] <string[]>] [-Mode {<Read> | <Write> | <ReadWrite>}] [-Action <scriptblock>] [<CommonParameters>]

Описание

Командлет Set-PSBreakpoint устанавливает точку останова в скрипте или в любой команде, выполняемой в текущем сеансе. С помощью командлета Set-PSBreakpoint точку останова можно установить до выполнения скрипта или команды или во время отладки в момент останова на другой точке останова.

Примечание. Командлет Set-PSBreakpoint не позволяет устанавливать точку останова на удаленном компьютере. Для отладки скрипта на удаленном компьютере скопируйте скрипт на локальный компьютер и отлаживайте его локально.

Каждая команда Set-PSBreakpoint создает точку останова одного из следующих трех типов.

-- Точка останова строки: устанавливает точку останова на пересечении строки и столбца с заданными номерами.

-- Точка останова команды: устанавливает точку останова на команде или функции.

-- Точка останова переменной: устанавливает точку останова на переменной.

С помощью одной команды Set-PSBreakpoint можно установить точки останова на нескольких строках, командах или переменных, однако каждая команда Set-PSBreakpoint задает точки останова только одного типа.

В точке останова Windows PowerShell временно прекращает выполнение и передает управление отладчику. Командная строка меняет вид на "DBG>", а у пользователя появляется доступ к набору команд отладчика. Однако с помощью параметра Action можно настроить альтернативную реакцию, например условия срабатывания точки останова или инструкции по выполнению дополнительных задач, таких как ведение журнала или диагностика.

Командлет Set-PSBreakpoint — это один из нескольких командлетов, предназначенных для отладки скриптов Windows PowerShell. Дополнительные сведения об отладчике Windows PowerShell см. в разделе about_Debuggers.

Параметры

-Action <scriptblock>

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

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

В случае использования параметра Action в каждой точке останова выполняется блок скрипта Action. Выполнение не останавливается, пока в скрипте не встретится ключевое слово Break. Если в блоке скрипта имеется слово Continue, то выполнение продолжится до следующей точки останова.

Дополнительные сведения см. в разделах about_Script_Blocks, about_Break и about_Continue.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Column <int>

Задает номер столбца в файле скрипта, на котором останавливается выполнение. Укажите только один номер столбца. По умолчанию используется столбец 1.

Значение Column используется со значением параметра Line для задания точки останова. Если параметр Line задает несколько строк, то параметр Column устанавливает точку останова в заданном столбце каждой из этих строк. Windows PowerShell прерывает выполнение перед инструкцией или выражением, которые включают знак, расположенный на пересечении указанных строки и столбца.

Столбцы отсчитываются от левого верхнего поля и нумеруются от 1 (не 0). Если указать столбец, которого нет в скрипте, ошибки не произойдет, однако точка останова никогда не будет достигнута.

Обязательно?

false

Позиция?

3

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Command <string[]>

Устанавливает точку останова команды. Введите имена команд, например Get-Process, или имена функций. Подстановочные знаки разрешены.

Выполнение будет останавливаться перед выполнением каждого экземпляра каждой из команд. Если команда является функцией, то выполнение останавливается перед каждым вызовом функции и в каждом из разделов BEGIN, PROCESS и END.

Обязательно?

true

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

true

-Line <Int32[]>

Задает точку останова строки в скрипте. Введите один или несколько номеров строк, разделив их запятыми. Windows PowerShell останавливается непосредственно перед выполнением инструкций, которые начинаются в каждой из указанных строк.

Строки отсчитываются от левого верхнего поля файла скрипта и нумеруются от 1 (не 0). Если указать пустую строку, выполнение будет остановлено перед очередной непустой строкой. Если заданной строки не существует, точка останова никогда не будет достигнута.

Обязательно?

true

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Mode <VariableAccessMode>

Определяет тип доступа для срабатывания точек останова переменных. По умолчанию используется значение Write.

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

Допустимые значения:

-- Write: останавливает выполнение непосредственно перед записью в переменную нового значения.

-- Read: останавливает выполнение при чтении переменной, т. е. когда к переменной обращаются для присваивания, вывода или использования. В режиме чтения выполнение не останавливается до изменения значения переменной.

-- ReadWrite: останавливает выполнение при чтении или записи переменной.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Script <string[]>

Устанавливает точку останова в каждом из заданных файлов скриптов. Введите пути и имена одного или нескольких файлов скриптов. Если файлы находятся в текущем каталоге, путь можно не указывать. Подстановочные знаки разрешены.

По умолчанию точки останова переменных и точки останова команд устанавливаются на всех командах, выполняемых в текущем сеансе. Этот параметр требуется только при установке точки останова строки.

Обязательно?

false

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

true

-Variable <string[]>

Устанавливает точку останова переменной. Введите список разделенных запятыми переменных без знаков доллара ($).

Для определения типа доступа для срабатывания точек останова переменных используйте параметр Mode. По умолчанию используется режим Write, в котором выполнение прекращается, прежде чем в переменную будет записано новое значение.

Обязательно?

true

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

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

Нет

Данные невозможно передать командлету Set-PSBreakpoint по конвейеру.

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

Объект точки останова (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint)

Командлет Set-PSBreakpoint возвращает объект, представляющий каждую из установленных им точек останова.

Примечания

Командлет Set-PSBreakpoint не позволяет устанавливать точку останова на удаленном компьютере. Для отладки скрипта на удаленном компьютере скопируйте скрипт на локальный компьютер и отлаживайте его локально.

При установке точки останова на нескольких строках командах или переменных командлет Set-PSBreakpoint создает объект точки останова для каждой точки.

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

Пример 1

C:\PS>set-psbreakpoint -script sample.ps1 -line 5

Column	 : 0
Line	 : 5
Action	 :
Enabled	: True
HitCount   : 0
Id		 : 0
Script	 : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Описание
-----------
Эта команда устанавливает точку останова на строке 5 скрипта Sample.ps1. В результате после запуска скрипта его выполнение будет приостановлено непосредственно перед выполнением строки 5.

При установке новой точки останова по номеру строки командлет Set-PSBreakpoint создает объект точки останова строки (System.Management.Automation.LineBreakpoint), который включает идентификатор точки останова, а также число срабатываний, как показано в примере вывода.






Пример 2

C:\PS>set-psbreakpoint -command Increment -script sample.ps1

Command	: Increment
Action	 :
Enabled	: True
HitCount   : 0
Id		 : 1
Script	 : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Описание
-----------
Эта команда создает точку останова команды на функции Increment в скрипте Sample.ps1. Выполнение скрипта останавливается непосредственно перед вызовом указанной функции.

Результатом выполнения команды является объект точки останова. Перед запуском скрипта значение свойства HitCount равно 0.






Пример 3

C:\PS>set-psbreakpoint -script sample.ps1 -variable Server -Mode ReadWrite

Описание
-----------
Эта команда устанавливает точку останова на переменной Server в скрипте Sample.ps1. Чтобы остановить выполнение при чтении переменной или перед изменением ее значения команда использует параметр Mode со значением ReadWrite.






Пример 4

C:\PS>set-psbreakpoint -script Sample.ps1 -command "write*"

Описание
-----------
Эта команда устанавливает точку останова на каждой команде скрипта Sample.ps1, начинающейся с "write," например "write-host".






Пример 5

C:\PS>set-psbreakpoint -script test.ps1 -command DiskTest `
  -action { (if $disk -gt 2) { break } }

Описание
-----------
Эта команда останавливает выполнение на функции DiskTest скрипта Test.ps1 только в том случае, если значение переменной $disk больше 2.

Она использует командлет Set-PSBreakpoint, чтобы установить точку останова команды на функции DiskTest. Значением параметра action является блок скрипта, который проверяет значение переменной $disk в функции.

В скрипте используется ключевое слово BREAK, чтобы остановить выполнение, если условие соблюдается. Альтернативный вариант (он используется по умолчанию) — CONTINUE.






Пример 6

C:\PS>set-psbreakpoint -command checkpoint-computer

Id	 : 0
Command  : checkpoint-computer
Enabled  : True
HitCount : 0
Action   :

C:\PS> function CheckLog {
>> get-eventlog -log Application | 
>> where {($_.source -like "TestApp") -and ($_.Message -like "*failed*")}
>>}
>>
C:\PS> Checklog
DEBUG: Hit breakpoint(s)
DEBUG:  Function breakpoint on 'prompt:Checklog'
C:\PS>>>

Описание
-----------
Эта команда устанавливает точку останова на функции CheckLog. Поскольку в команде не указан скрипт, точка останова относится ко всем выполняемым в данном сеансе командам. Отладчик прерывает выполнение при вызове функции, а не при ее объявлении.






Пример 7

C:\PS>set-psbreakpoint -script sample.ps1 -line 1, 14, 19 -column 2 -action {&(log.ps1)}

Column	 : 2
Line	 : 1
Action	 :
Enabled	: True
HitCount   : 0
Id		 : 6
Script	 : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Column	 : 2
Line	 : 14
Action	 :
Enabled	: True
HitCount   : 0
Id		 : 7
Script	 : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Column	 : 2
Line	 : 19
Action	 :
Enabled	: True
HitCount   : 0
Id		 : 8
Script	 : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Описание
-----------
Эта команда устанавливает три точки останова строк в скрипте Sample.ps1. Она устанавливает по одной точке останова в столбце 2 каждой из строк скрипта. Действие, указанное в параметре Action, относится ко всем точкам останова.






См. также