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


Set-PSBreakpoint

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

Синтаксис

Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Column] <Int32>]
   [-Line] <Int32[]>
   [-Script] <String[]>
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   -Command <String[]>
   [[-Script] <String[]>]
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Script] <String[]>]
   -Variable <String[]>
   [-Mode <VariableAccessMode>]
   [<CommonParameters>]

Описание

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

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

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

  • Точка останова строки — задает точки останова в определенных координатах линии и столбца.
  • Точка останова команд — задает точки останова для команд и функций.
  • Переменная точка останова — задает точки останова для переменных.

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

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

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

Примеры

Пример 1. Установка точки останова в строке

В этом примере устанавливается точка останова в строке 5 в скрипте Sample.ps1. При запуске скрипта выполнение останавливается непосредственно перед выполнением строки 5.

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

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

Пример 2. Установка точки останова для функции

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

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

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

Пример 3. Установка точки останова для переменной

В этом примере устанавливается точка останова в переменной Сервера в скрипте Sample.ps1. Он использует параметр Mode со значением ReadWrite , чтобы остановить выполнение, когда значение переменной считывается и непосредственно перед изменением значения.

Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite

Пример 4. Установка точки останова для каждой команды, начинающейся с указанного текста

В этом примере устанавливается точка останова для каждой команды в скрипте Sample.ps1, начинающаяся с "записи", например Write-Host.

Set-PSBreakpoint -Script Sample.ps1 -Command "write*"

Пример 5. Установка точки останова в зависимости от значения переменной

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

Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }

Значение действия — это блок скрипта, который проверяет значение $Disk переменной в функции.

Действие использует ключевое break слово для остановки выполнения, если условие выполнено. Альтернатива (и значение по умолчанию) — "Продолжить".

Пример 6. Установка точки останова для функции

В этом примере показано, как задать точку останова CheckLog для функции. Поскольку команда не указывает сценарий, точка останова устанавливается для любого объекта, который выполняется в текущем сеансе. Отладчик останавливается при вызове функции, а не при ее объявлении.

PS> Set-PSBreakpoint -Command "checklog"
Id       : 0
Command  : checklog
Enabled  : True
HitCount : 0
Action   :

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

Пример 7. Установка точек останова в нескольких строках

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

PS C:\> 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

Параметры

-Action

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

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

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

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

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

-Column

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

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

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

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

-Command

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

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

Тип:String[]
Aliases:C
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:True

-Line

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

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

Тип:Int32[]
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Mode

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

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

  • Запись — останавливает выполнение непосредственно перед записью нового значения в переменную.
  • Чтение — останавливает выполнение при чтении переменной, то есть при доступе к его значению либо для назначения, отображения или использования. В режиме чтения выполнение не прекращается при изменении значения переменной.
  • ReadWrite — останавливает выполнение, если переменная считывается или записывается.
Тип:VariableAccessMode
Допустимые значения:Read, Write, ReadWrite
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Script

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

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

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

-Variable

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

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

Тип:String[]
Aliases:V
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

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

None

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

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

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

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

Примечания

Windows PowerShell включает следующие псевдонимы для Set-PSBreakpoint:

  • sbp

  • Set-PSBreakpoint Не удается задать точку останова на удаленном компьютере. Для отладки сценария на удаленном компьютере скопируйте сценарий на локальный компьютер, а затем выполните отладку локально.

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

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