Set-PSBreakpoint
Устанавливает точку останова на строке, команде или переменной.
Синтаксис
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 } }
Значение действия — это блок скрипта, который проверяет значение переменной $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
Пример 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.
Type: | ScriptBlock |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Column
Указывает номер столбца в файле сценария, в котором выполнение останавливается. Введите только один номер столбца. Значение по умолчанию: столбец 1.
Значение Column используется со значением параметра 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
Указывает режим доступа, который активирует переменные точки останова. Значение по умолчанию — Запись.
Этот параметр действителен, только если в команде используется параметр Variable . Режим применяется ко всем точкам останова, заданным в команде. Допустимые значения для этого параметра:
- Запись — останавливает выполнение непосредственно перед записью нового значения в переменную.
- Чтение — останавливает выполнение при чтении переменной, т. е. при доступе к ее значению для назначения, отображения или использования. В режиме чтения выполнение не прекращается при изменении значения переменной.
- ReadWrite — останавливает выполнение при чтении или записи переменной.
Type: | VariableAccessMode |
Accepted values: | Read, Write, ReadWrite |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Runspace
Задает идентификатор объекта Runspace , чтобы можно было взаимодействовать с точками останова в указанном пространстве выполнения.
Этот параметр был добавлен в PowerShell 7.2.
Type: | Runspace |
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
возвращает объект , представляющий каждую заданную точку останова.
Примечания
PowerShell включает следующие псевдонимы для Set-PSBreakpoint
:
Для всех платформ.
sbp
Set-PSBreakpoint
не удается задать точку останова на удаленном компьютере. Для отладки сценария на удаленном компьютере скопируйте сценарий на локальный компьютер, а затем выполните отладку локально.При установке точки останова в нескольких строках, команде или переменной
Set-PSBreakpoint
создается объект точки останова для каждой записи.При задании точки останова в функции или переменной в командной строке можно задать точку останова до или после создания функции или переменной.