共用方式為


Debug-Runspace

使用 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>]

Description

Debug-Runspace cmdlet 會啟動一個具有本機或遠端活動執行空間的互動式偵錯會話。 您可以先執行 Get-Process 來尋找與 PowerShell 相關聯的程序,然後使用 Enter-PSHostProcess 參數中指定的程序 ID 執行 以附加到程序,最後執行 Get-Runspace 列出 PowerShell 主機程序中的執行空間。

選取要偵錯的 Runspace 之後,如果 Runspace 目前正在執行命令或腳本,或腳本在斷點停止,PowerShell 會開啟 Runspace 的遠端調試程式會話。 您可以使用與遠端工作階段腳本偵錯相同的方式來偵錯 Runspace 腳稿。

如果您是執行該進程的電腦上的系統管理員,或正在運行自己想要偵錯的腳本,您只能附加至 PowerShell 主機進程。 此外,您無法輸入執行目前 PowerShell 工作階段的主機進程。 您只能輸入執行不同 PowerShell 工作階段的主機進程。

範例

範例 1:偵錯遠端 Runspace

在此範例中,您會偵錯遠端計算機上開啟的 Runspace WS10TestServer。 在命令的第一行中,您會在遠端電腦上執行 Get-Process,並篩選 Windows PowerShell 主機進程。 在此範例中,您想要偵錯進程標識碼 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,然後指定您在第一個命令中獲取的主機進程 ID 1152,以連接到在遠端伺服器上運行的 Windows PowerShell ISE 主機進程。

在第四個命令中,您可以執行 Get-Runspace以列出程序 ID 1152 的可用 Runspaces。 請記下運行中 runspace 的 ID 編號;它正在執行您想要除錯的腳本。

在最後一個命令中,您會藉由執行 TestWFVar1.ps1開始偵錯已開啟的 runspace Debug-Runspace運行的腳本,並藉由新增 參數 Id 2 來識別這個 runspace。 因為腳本中有斷點,調試程式就會開啟。

參數

-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

指定 Runspace 的識別碼。 您可以執行 Get-Runspace 以顯示 runspace 識別碼。

參數屬性

類型:Int32
預設值:None
支援萬用字元:False
不要顯示:False

參數集

IdParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-InstanceId

依據其實例 ID 指定 runspace,這個 ID 是您可以藉由執行 Get-Runspace顯示的 GUID。

參數屬性

類型:Guid
預設值:None
支援萬用字元:False
不要顯示:False

參數集

InstanceIdParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Name

依其名稱指定 runspace。 您可以執行 Get-Runspace 以顯示 runspace 的名稱。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

NameParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Runspace

指定 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 適用於處於已開啟狀態的執行空間。 如果 Runspace 狀態從 Opened 變更為另一個狀態,該 Runspace 會自動從執行清單中移除。 只有在 runspace 符合下列準則時,才會將 runspace 新增至執行中清單。

  • 如果它來自 Invoke-Command;換句話說,它有 Invoke-Command GUID 識別碼。
  • 如果它來自 Debug-Runspace,也就是說,它有 Debug-Runspace GUID 識別碼。
  • 如果它來自 PowerShell 工作流程,且其工作流程作業標識碼與當前處於活躍狀態的調試器工作流程作業標識碼相同。