Debug-Runspace
使用运行空间启动交互式调试会话。
Debug-Runspace
[-Runspace] <Runspace>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Name] <String>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Id] <Int32>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-InstanceId] <Guid>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
cmdlet 使用本地或远程活动运行空间启动交互式调试会话。 可以先运行 Get-Process
来查找与 PowerShell 关联的进程,然后 Enter-PSHostProcess
ID 参数中指定的进程 ID 附加到进程,然后 Get-Runspace
列出 PowerShell 主机进程中的运行空间。
选择要调试的运行空间后,如果运行空间当前正在运行命令或脚本,或者脚本已在断点处停止,PowerShell 将为运行空间打开远程调试器会话。 可以采用远程会话脚本的调试方式调试 Runspace 脚本。
如果你是运行进程的计算机上的管理员,或者运行要调试的脚本,则只能附加到 PowerShell 主机进程。 此外,不能输入正在运行当前 PowerShell 会话的主机进程。 只能输入运行其他 PowerShell 会话的主机进程。
在此示例中,你将调试在远程计算机上打开的 Runspace WS10TestServer。 在命令的第一行中,在远程计算机上运行 Get-Process
,并筛选 Windows PowerShell 主机进程。 在此示例中,需要调试进程 ID 1152(Windows PowerShell ISE 主机进程)。
PS C:\> Get-Process -ComputerName "WS10TestServer" -Name "*powershell*"
Handles WS(K) VM(M) CPU(s) Id ProcessName
------- ----- ----- ------ -- -----------
377 69912 63 2.09 2420 powershell
399 123396 829 4.48 1152 powershell_ise
PS C:\> Enter-PSSession -ComputerName "WS10TestServer"
[WS10TestServer]:PS C:\> Enter-PSHostProcess -Id 1152
[WS10TestServer:][Process:1152]: PS C:\Users\Test\Documents> Get-Runspace
Id Name ComputerName Type State Availability
-- ---- ------------ ---- ----- ------------
1 Runspace1 WS10TestServer Remote Opened Available
2 RemoteHost WS10TestServer Remote Opened Busy
[WS10TestServer][Process:1152]: PS C:\Users\Test\Documents> Debug-Runspace -Id 2
Hit Line breakpoint on 'C:\TestWFVar1.ps1:83'
At C:\TestWFVar1.ps1:83 char:1
+ $scriptVar = "Script Variable"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Process:1152]: [RSDBG: 2]: PS C:\> >
在第二个命令中,运行 Enter-PSSession
在 WS10TestServer 上打开远程会话。 在第三个命令中,通过运行 Enter-PSHostProcess
附加到远程服务器上运行的 Windows PowerShell ISE 主机进程,并指定在第一个命令 1152 中获取的主机进程的 ID。
在第四个命令中,通过运行 Get-Runspace
列出进程 ID 1152 的可用运行空间。
请注意忙碌运行空间的 ID 号;它正在运行要调试的脚本。
在最后一个命令中,通过运行 Debug-Runspace
来开始调试运行脚本的已打开的 runspace,TestWFVar1.ps1
,并通过添加 ID 参数来标识运行空间(2)。 由于脚本中有断点,因此调试器将打开。
允许在调试器附加时立即在当前位置中断。
此参数已在 PowerShell 7.2 中添加。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
在运行 cmdlet 之前,提示你进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | True |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
指定运行空间的 ID 号。 可以运行 Get-Runspace
来显示运行空间 ID。
类型: | Int32 |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
按其实例 ID 指定一个运行空间,这是一个 GUID,可以通过运行 Get-Runspace
来显示。
类型: | Guid |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
按其名称指定一个运行空间。 可以运行 Get-Runspace
以显示运行空间的名称。
类型: | String |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
指定 runspace 对象。 为此参数提供值的最简单方法是指定包含筛选 Get-Runspace
命令结果的变量。
类型: | Runspace |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
显示 cmdlet 运行时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | True |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
可以通过管道将 Get-Runspace
命令的结果传递给此 cmdlet。
Debug-Runspace
适用于处于打开状态的运行空间。 如果运行空间状态从“打开”更改为另一个状态,该运行空间将自动从正在运行的列表中删除。 仅当运行空间满足以下条件时,才会将运行空间添加到正在运行的列表中。
- 如果它来自 Invoke-Command;也就是说,它具有
Invoke-Command
GUID ID。 - 如果它来自
Debug-Runspace
;也就是说,它具有Debug-Runspace
GUID ID。 - 如果它来自 PowerShell 工作流,并且其工作流作业 ID 与当前活动调试器工作流作业 ID 相同。