Поиск по сайту:

Set-PSBreakpoint (Microsoft.PowerShell.Utility)


Set-PSBreakpoint

Модуль:
Microsoft.PowerShell.Utility

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

Синтаксис

Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Column] <Int32>]
   [-Line] <Int32[]>
   [-Script] <String[]>
   [-Runspace <Runspace>]
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   -Command <String[]>
   [[-Script] <String[]>]
   [-Runspace <Runspace>]
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Script] <String[]>]
   -Variable <String[]>
   [-Mode <VariableAccessMode>]
   [-Runspace <Runspace>]
   [<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. Установка точки останова для переменной

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

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

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

В этом примере устанавливается точка останова для каждой команды в сценарии Sample.ps1, которая начинается с «write», например 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 } }

Значением Action является блок сценария, который проверяет значение переменной $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

Пример 8. Установка точки останова в пространстве выполнения

В этом примере задание запускается. Пространство выполнения сохраняется в переменной и передается команде Set-PSBreakPoint с параметром Runspace.

Start-Job -ScriptBlock {
    Start-Sleep -Seconds 10
}

$runspace = Get-Runspace -Id 1

Set-PSBreakpoint -Command Start-Sleep -Runspace $runspace

Параметры

-Action

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

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

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

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

Тип :

ScriptBlock

Позиция:

Именованный

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

None

Необходимый:

False

Примите ввод конвейера:

False

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

False

-Column

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

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

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

Тип :

Int32

Позиция:

2

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

1

Необходимый:

False

Примите ввод конвейера:

False

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

False

-Command

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

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

Тип :

String[]

Псевдонимы:

C

Позиция:

Именованный

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

None

Необходимый:

True

Примите ввод конвейера:

False

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

True

-Line

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

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

Тип :

Int32[]

Позиция:

1

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

None

Необходимый:

True

Примите ввод конвейера:

False

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

False

-Mode

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

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

  • Запись — останавливает выполнение непосредственно перед записью нового значения в переменную.
  • Чтение — останавливает выполнение при чтении переменной, то есть при доступе к ее значению для назначения, отображения или использования. В режиме чтения выполнение не останавливается при изменении значения переменной.
  • ReadWrite — останавливает выполнение при чтении или записи переменной.
Тип :

Режим доступа к переменной

Принятые значения:

Читать, писать, читать писать

Позиция:

Именованный

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

None

Необходимый:

False

Примите ввод конвейера:

False

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

False

-Runspace

Указывает идентификатор объекта Runspace, чтобы вы могли взаимодействовать с точками останова в указанном пространстве выполнения.

Этот параметр был добавлен в PowerShell 7.2.

Тип :

Пространство выполнения

Позиция:

Именованный

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

None

Необходимый:

False

Примите ввод конвейера:

False

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

False

-Script

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

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

Тип :

String[]

Позиция:

0

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

None

Необходимый:

False

Примите ввод конвейера:

False

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

False

-Variable

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

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

Тип :

String[]

Псевдонимы:

V

Позиция:

Именованный

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

None

Необходимый:

True

Примите ввод конвейера:

False

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

False

Входы

Нет

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

Выходы

CommandBreakpoint

Точка разрыва строки

Точка останова переменной

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

Примечания

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

  • Все платформы:

      sbp
  • Set-PSBreakpoint не может установить точку останова на удаленном компьютере. Чтобы отладить сценарий на удаленном компьютере, скопируйте его на локальный компьютер и выполните отладку локально.

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

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