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. Установка точки останова для переменной

В этом примере задается точка останова в переменной 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 } }

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

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

Пример 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.

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

-Column

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

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

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

Type:Int32
Position:2
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

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

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

Type:String[]
Aliases:C
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Line

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

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

Type:Int32[]
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Mode

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

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

  • Write — останавливает выполнение непосредственно перед записью нового значения в переменную.
  • Чтение — останавливает выполнение, когда переменная считывается, то есть при доступе к его значению либо присваивается, отображается или используется. В режиме чтения выполнение не прекращается при изменении значения переменной.
  • ReadWrite — останавливает выполнение, если переменная считывается или записывается.
Type:VariableAccessMode
Accepted values:Read, Write, ReadWrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Script

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

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

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Variable

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

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

Type:String[]
Aliases:V
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

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

None

Входные данные невозможно передать в Set-PSBreakpoint.

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

Breakpoint object (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint)

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

Примечания

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