Debug-Job

调试正在运行的后台或远程作业。

语法

JobParameterSet (默认值)

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

JobNameParameterSet

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

JobIdParameterSet

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

JobInstanceIdParameterSet

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

说明

使用 Debug-Job cmdlet 可以调试在作业中运行的脚本。 该 cmdlet 旨在调试 PowerShell 工作流作业、后台作业和在远程会话中运行的作业。 Debug-Job 接受正在运行的作业对象、名称、ID 或实例 ID 作为输入,并在正在运行的脚本上启动调试会话。 调试器 quit 命令停止作业和正在运行的脚本。 exit 命令分离调试器,并允许作业继续运行。

示例

示例 1:按作业 ID 调试作业

此命令强行进入 ID 为 3 的正在运行的作业。

Debug-Job -Id 3
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
3      Job3            RemoteJob       Running       True            PowerShellIx         TestWFDemo1.ps1
          Entering debug mode. Use h or ? for help.

          Hit Line breakpoint on 'C:\TestWFDemo1.ps1:8'

          At C:\TestWFDemo1.ps1:8 char:5
          +     Write-Output -InputObject "Now writing output:"
          +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          [DBG:PowerShellIx]: PS C:\> > list

              3:
              4:  workflow SampleWorkflowTest
              5:  {
              6:      param ($MyOutput)
              7:
              8:*     Write-Output -InputObject "Now writing output:"
              9:      Write-Output -Input $MyOutput
             10:
             11:      Write-Output -InputObject "Get PowerShell process:"
             12:      Get-Process -Name powershell
             13:
             14:      Write-Output -InputObject "Workflow function complete."
             15:  }
             16:
             17:  # Call workflow function
             18:  SampleWorkflowTest -MyOutput "Hello"

参数

-BreakAll

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

此参数已在 PowerShell 7.2 中添加。

参数属性

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

参数集

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

-Confirm

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

参数属性

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

参数集

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

-Id

指定正在运行的作业的 ID 号。 若要获取作业的 ID 号,请运行 Get-Job cmdlet。

参数属性

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

参数集

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

-InstanceId

指定正在运行的作业的实例 ID GUID。

参数属性

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

参数集

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

-Job

指定正在运行的作业对象。 使用此参数的最简单方法是保存 Get-Job 命令的结果,该命令返回要在变量中调试的正在运行的作业,然后将变量指定为此参数的值。

参数属性

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

参数集

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

-Name

通过作业的易记名称指定作业。 启动作业时,可以通过在 cmdlet(如 Invoke-Command)中添加 Start-Job 参数来指定作业名称。

参数属性

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

参数集

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

-WhatIf

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

参数属性

类型:SwitchParameter
默认值:False
支持通配符: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

输入

System.Management.Automation.RemotingJob