Set-PSBreakpoint
Задает точку останова в строке, команде или переменной.
Синтаксис
Line (по умолчанию)
Set-PSBreakpoint
[[-Column] <Int32>]
[-Line] <Int32[]>
[-Script] <String[]>
[-Action <ScriptBlock>]
[-Runspace <Runspace>]
[<CommonParameters>]
Command
Set-PSBreakpoint
[[-Script] <String[]>]
-Command <String[]>
[-Action <ScriptBlock>]
[-Runspace <Runspace>]
[<CommonParameters>]
Variable
Set-PSBreakpoint
[[-Script] <String[]>]
-Variable <String[]>
[-Action <ScriptBlock>]
[-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. Установка точки останова для переменной
В этом примере устанавливается точка останова в переменной сервера
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 } }
Значение действия
Действие использует ключевое слово break для остановки выполнения, если условие выполнено. Альтернатива (и значение по умолчанию) — "Продолжить".
Пример 6. Установка точки останова для функции
В этом примере устанавливается точка останова для функции CheckLog. Так как команда не задает скрипт, точка останова устанавливается на все, что выполняется в текущем сеансе. Отладчик прерывается при вызове функции, а не при объявлении.
PS> Set-PSBreakpoint -Command "CheckLog"
Id : 0
Command : CheckLog
Enabled : True
HitCount : 0
Action :
function CheckLog {
>> Get-EventLog -Log Application |
>> Where-Object {($_.Source -like "TestApp") -and ($_.Message -like "*failed*")}
>>}
>>
PS> CheckLog
DEBUG: Hit breakpoint(s)
DEBUG: Function breakpoint on 'prompt:CheckLog'
Пример 7. Установка точек останова в нескольких строках
В этом примере задаются три точки останова строки в скрипте Sample.ps1. Он задает одну точку останова в столбце 2 на каждой строке, указанной в скрипте. Действие, указанное в параметре действия
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 |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Column
Указывает номер столбца в файле скрипта, на котором останавливается выполнение. Введите только один номер столбца. Значение по умолчанию — столбец 1.
Значение столбца используется со значением параметра Line для указания точки останова. Если параметр строки
Столбцы учитываются из левого верхнего поля, начиная с номера 1 столбца (не 0). Если указать столбец, который не существует в скрипте, ошибка не объявляется, но точка останова никогда не выполняется.
Свойства параметра
| Тип: | Int32 |
| Default value: | 1 |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Line
| Position: | 2 |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Command
Задает точку останова команды. Введите имена командлетов, например Get-Processили имена функций. Подстановочные символы разрешены.
Выполнение останавливается непосредственно перед выполнением каждого экземпляра каждой команды. Если команда является функцией, выполнение останавливается при каждом вызове функции и на каждом begin, processи блоке end.
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
| Aliases: | С |
Наборы параметров
Command
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Line
Задает точку останова строки в скрипте. Введите один или несколько номеров строк, разделенных запятыми. PowerShell останавливается непосредственно перед выполнением инструкции, начинающейся с каждой из указанных строк.
Строки учитываются в левом верхнем поле файла скрипта, начиная с номера строки 1 (не 0). Если указать пустую строку, выполнение останавливается до следующей непустой строки. Если строка выходит за пределы диапазона, точка останова никогда не попадает.
Свойства параметра
| Тип: | Int32[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Line
| Position: | 1 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Mode
Указывает режим доступа, который активирует точки останова переменных. Значение по умолчанию — записи.
Этот параметр действителен, только если параметр переменной используется в команде. Режим применяется ко всем точкам останова, заданным в команде. Допустимые значения для этого параметра:
- записи — останавливает выполнение непосредственно перед записью нового значения в переменную.
- чтение. Останавливает выполнение при чтении переменной, то есть при доступе к его значению, назначению, отображению или использованию. В режиме чтения выполнение не останавливается при изменении значения переменной.
- ReadWrite — останавливает выполнение при чтении или записи переменной.
Свойства параметра
| Тип: | VariableAccessMode |
| Default value: | None |
| Допустимые значения: | Read, Write, ReadWrite |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Variable
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Runspace
Задает идентификатор объекта Runspace, чтобы можно было взаимодействовать с точками останова в указанном пространстве выполнения.
Этот параметр был добавлен в PowerShell 7.2.
Свойства параметра
| Тип: | Runspace |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Script
Указывает массив файлов скриптов, в котором этот командлет задает точку останова. Введите пути и имена файлов одного или нескольких файлов скриптов. Если файлы находятся в текущем каталоге, можно опустить путь. Подстановочные символы разрешены.
По умолчанию переменные точки останова и точки останова команд задаются в любой команде, которая выполняется в текущем сеансе. Этот параметр требуется только при задании точки останова строки.
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Line
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
Command
| Position: | 0 |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
Variable
| Position: | 0 |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Variable
Указывает массив переменных, на которые этот командлет устанавливает точки останова. Введите разделенный запятыми список переменных без знаков доллара ($).
Используйте параметр режима
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | В |
Наборы параметров
Variable
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
CommandBreakpoint
LineBreakpoint
VariableBreakpoint
Set-PSBreakpoint возвращает объект, представляющий каждую точку останова, которую он задает.
Примечания
PowerShell включает следующие псевдонимы для Set-PSBreakpoint:
Все платформы:
sbp
Set-PSBreakpointне удается задать точку останова на удаленном компьютере. Чтобы выполнить отладку скрипта на удаленном компьютере, скопируйте скрипт на локальный компьютер и отладите его локально.При установке точки останова для нескольких строк, команд или переменной
Set-PSBreakpointсоздает объект точки останова для каждой записи.При настройке точки останова в функции или переменной в командной строке можно задать точку останова до или после создания функции или переменной.