[玩转系统] 设置 PSBreakpoint (Microsoft.PowerShell.Utility)
作者:精品下载站 日期:2024-12-14 02:03:41 浏览:13 分类:玩电脑
设置 PSBreakpoint (Microsoft.PowerShell.Utility)
设置 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
cmdlet 在脚本或当前会话中运行的任何命令中设置断点。您可以使用 Set-PSBreakpoint
在执行脚本或运行命令之前或在调试期间在另一个断点处停止时设置断点。
Set-PSBreakpoint
无法在远程计算机上设置断点。要在远程计算机上调试脚本,请将脚本复制到本地计算机,然后在本地进行调试。
每个 Set-PSBreakpoint
命令都会创建以下三种类型的断点之一:
- 行断点 - 在特定行和列坐标处设置断点。
- 命令断点 - 在命令和函数上设置断点。
- 变量断点 - 在变量上设置断点。
您可以在单个 Set-PSBreakpoint
命令中对多行、命令或变量设置断点,但每个 Set-PSBreakpoint
命令仅设置一种类型的断点。
在断点处,PowerShell 暂时停止执行并将控制权交给调试器。命令提示符更改为 DBG\>
,并且一组调试器命令可供使用。但是,您可以使用 Action 参数指定备用响应,例如断点的条件或执行其他任务(例如日志记录或诊断)的指令。
Set-PSBreakpoint
cmdlet 是设计用于调试 PowerShell 脚本的多个 cmdlet 之一。有关 PowerShell 调试器的更多信息,请参阅 about_Debuggers。
示例
示例 1:在一行上设置断点
此示例在 Sample.ps1 脚本的第 5 行设置断点。当脚本运行时,执行会在第 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
cmdlet 会生成一个行断点对象 (System.Management.Automation.LineBreakpoint),其中包含断点 ID 和命中数数。
示例 2:在函数上设置断点
此示例在 Sample.ps1 cmdlet 中的 Increment
函数上创建命令断点。脚本在每次调用指定函数之前立即停止执行。
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 脚本中的 Server 变量上设置断点。它使用值为 ReadWrite 的 Mode 参数,在读取变量值时且值发生变化之前停止执行。
Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite
示例 4:在以指定文本开头的每个命令上设置断点
此示例在 Sample.ps1 脚本中以“write”开头的每个命令(例如 Write-Host
)上设置断点。
Set-PSBreakpoint -Script Sample.ps1 -Command "write*"
示例 5:根据变量的值设置断点
仅当 $Disk
变量的值大于 2 时,此示例才会停止 Test.ps1
脚本中 DiskTest
函数的执行。
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:在运行空间中设置断点
在此示例中,启动了一项作业。运行空间存储在变量中,并使用 Runspace 参数传递给 Set-PSBreakPoint
命令。
Start-Job -ScriptBlock {
Start-Sleep -Seconds 10
}
$runspace = Get-Runspace -Id 1
Set-PSBreakpoint -Command Start-Sleep -Runspace $runspace
参数
-Action
指定在每个断点处运行而不是中断的命令。输入包含命令的脚本块。您可以使用此参数设置条件断点或执行其他任务,例如测试或日志记录。
如果省略此参数,或者未指定任何操作,则执行将在断点处停止,然后调试器启动。
使用 Action 参数时,Action 脚本块会在每个断点处运行。除非脚本块包含 Break 关键字,否则执行不会停止。如果在脚本块中使用Continue 关键字,则会继续执行直到下一个断点。
有关详细信息,请参阅 about_Script_Blocks、about_Break 和 about_Continue。
类型 :ScriptBlock
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Column
指定脚本文件中执行停止的列的列号。仅输入一列编号。默认为第 1 列。
Column 值与 Line 参数的值一起使用来指定断点。如果 Line 参数指定多行,则 Column 参数会在每条指定行的指定列处设置断点。 PowerShell 在包含指定行和列位置处的字符的语句或表达式之前停止执行。
列从左上角开始计数,从列号 1(不是 0)开始。如果指定脚本中不存在的列,则不会声明错误,但永远不会执行断点。
类型 :整数32
位置:2
默认值:1
必需的:False
接受管道输入:False
接受通配符:False
-Command
设置命令断点。输入 cmdlet 名称,例如 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
指定运行空间对象的 ID,以便您可以与指定运行空间中的断点进行交互。
此参数是在 PowerShell 7.2 中添加的。
类型 :运行空间
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Script
指定此 cmdlet 在其中设置断点的一组脚本文件。输入一个或多个脚本文件的路径和文件名。如果文件位于当前目录中,则可以省略路径。允许使用通配符。
默认情况下,变量断点和命令断点设置在当前会话中运行的任何命令上。仅当设置行断点时才需要此参数。
类型 :String[]
位置:0
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Variable
指定此 cmdlet 在其上设置断点的变量数组。输入以逗号分隔的变量列表,不带美元符号 ($
)。
使用模式参数来确定触发断点的访问模式。默认模式“写入”会在新值写入变量之前停止执行。
类型 :String[]
别名:V
位置:命名
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
输入
无
您无法将对象通过管道传输到此 cmdlet。
输出
命令断点
行断点
变量断点
Set-PSBreakpoint
返回一个表示它设置的每个断点的对象。
笔记
PowerShell 包含以下 Set-PSBreakpoint
别名:
所有平台:
sbp
Set-PSBreakpoint
无法在远程计算机上设置断点。要在远程计算机上调试脚本,请将脚本复制到本地计算机,然后在本地进行调试。
当您在多个行、命令或变量上设置断点时,Set-PSBreakpoint
会为每个条目生成一个断点对象。
在命令提示符处对函数或变量设置断点时,可以在创建函数或变量之前或之后设置断点。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag