Debug-Runspace

使用运行空间启动交互式调试会话。

语法

RunspaceParameterSet (默认值)

Debug-Runspace
    [-Runspace] <Runspace>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Debug-Runspace
    [-Name] <String>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

IdParameterSet

Debug-Runspace
    [-Id] <Int32>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Debug-Runspace
    [-InstanceId] <Guid>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

Debug-Runspace cmdlet 启动与本地或远程活动运行环境的交互式调试会话。 可以先运行 Get-Process 来查找与 PowerShell 关联的进程,然后使用 Enter-PSHostProcessId 参数中指定的进程 ID 来附加到该进程,然后使用 Get-Runspace 列出 PowerShell 主机进程中的运行空间,从而找到要调试的运行空间。

选择要调试的运行空间后,如果运行空间当前正在运行命令或脚本,或者脚本已在断点处停止,PowerShell 将为运行空间打开远程调试器会话。 可以采用远程会话脚本的调试方式调试运行空间脚本。

如果你是运行进程的计算机上的管理员,或者你在运行要调试的脚本,则只能附加到 PowerShell 主机进程。 此外,不能输入正在运行当前 PowerShell 会话的主机进程。 只能输入运行其他 PowerShell 会话的主机进程。

示例

示例 1:调试远程运行空间

在此示例中,你将调试在远程计算机 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 主机进程,并指定在第一个命令中获得的主机进程 ID 1152。

在第四个命令中,通过运行 Get-Runspace列出进程 ID 1152 的可用运行空间。 请注意忙碌运行空间的 ID 编号,它正在运行你要调试的脚本。

在最后一个命令中,你通过运行 TestWFVar1.ps1来开始调试正在运行脚本 Debug-Runspace的已打开运行空间,并通过添加 Id 参数,以 ID 2 来标识运行空间。 由于脚本中有断点,调试器会打开。

参数

-BreakAll

允许在调试器附加时立即在当前位置中断。

此参数已在 PowerShell 7.2 中添加。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Confirm

在运行 cmdlet 之前,提示你进行确认。

参数属性

类型:SwitchParameter
默认值:True
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Id

指定运行空间的 ID 号。 可以运行 Get-Runspace 来显示运行空间 ID。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

IdParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InstanceId

按实例 ID 指定一个运行空间,这是你可以通过运行 Get-Runspace 来显示的 GUID。

参数属性

类型:Guid
默认值:None
支持通配符:False
不显示:False

参数集

InstanceIdParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Name

按其名称指定运行空间。 可以运行 Get-Runspace 以显示运行空间的名称。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

NameParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Runspace

指定运行空间对象。 为此参数提供值的最简单方法是指定包含筛选 Get-Runspace 命令结果的变量。

参数属性

类型:Runspace
默认值:None
支持通配符:False
不显示:False

参数集

RunspaceParameterSet
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。

参数属性

类型:SwitchParameter
默认值:True
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

Runspace

可以通过管道将 Get-Runspace 命令的结果传递给此 cmdlet。

备注

Debug-Runspace 适用于处于打开状态的运行空间。 如果运行空间状态从“打开”更改为另一个状态,该运行空间将自动从正在运行的列表中删除。 仅当运行空间满足以下条件时,它才会被添加到正在运行的列表中。

  • 如果它来自 Invoke-Command,也就是说,它具有 Invoke-Command GUID ID。
  • 如果它来自 Debug-Runspace,也就是说,它具有 Debug-Runspace GUID ID。
  • 如果它来自 PowerShell 工作流,并且其工作流作业 ID 与当前活动调试器工作流作业 ID 相同。