Debug-Runspace
使用 Runspace 啟動互動式偵錯工作階段。
語法
Debug-Runspace
[-Runspace] <Runspace>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Name] <String>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Id] <Int32>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-InstanceId] <Guid>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Debug-Runspace
Cmdlet 會啟動具有本機或遠端作用中 Runspace 的互動式偵錯會話。 您可以先執行 Get-Process
來尋找與 PowerShell 相關聯的進程,然後以 標識碼 參數中指定的進程標識碼 Enter-PSHostProcess
,以附加至進程,然後 Get-Runspace
列出 PowerShell 主機進程內的 Runspace。
選取要偵錯的 Runspace 之後,如果 Runspace 目前正在執行命令或腳本,或腳本在斷點停止,PowerShell 會開啟 Runspace 的遠端調試程式會話。 您可以使用與遠端工作階段腳本偵錯相同的方式來偵錯 Runspace 腳稿。
如果您是執行進程之電腦上的系統管理員,或執行您要偵錯的腳本,您只能附加至 PowerShell 主機進程。 此外,您無法輸入執行目前 PowerShell 工作階段的主機進程。 您只能輸入執行不同 PowerShell 工作階段的主機進程。
範例
範例 1:偵錯遠端 Runspace
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
PS C:\> [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:\> >
在此範例中,您會偵錯遠端計算機上開啟的 Runspace WS10TestServer。 在命令的第一行中,您會在遠端電腦上執行 Get-Process
,並篩選 Windows PowerShell 主機進程。 在此範例中,您想要偵錯進程標識碼 1152,也就是 Windows PowerShell ISE 主機進程。
在第二個命令中,您會執行 Enter-PSSession
在 WS10TestServer 上開啟遠端會話。 在第三個命令中,您可以執行 Enter-PSHostProcess
,並指定您在第一個命令 1152 中取得的主機進程標識符,以附加至遠端伺服器上執行的 Windows PowerShell ISE 主機進程。
在第四個命令中,您可以執行 Get-Runspace
,列出進程標識碼 1152 的可用 Runspaces。
請注意忙碌 Runspace 的標識符;它正在執行您要偵錯的腳本。
在最後一個命令中,您會藉由執行 Debug-Runspace
開始偵錯已開啟的 Runspace,TestWFVar1.ps1執行腳本,並藉由新增 Id 參數來識別 runspace。 因為腳本中有斷點,調試程式就會開啟。
參數
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | True |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Id
指定 Runspace 的識別碼。 您可以執行 Get-Runspace
以顯示 runspace 識別碼。
類型: | Int32 |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-InstanceId
依實例識別碼指定 runspace,這是您可以藉由執行 Get-Runspace
顯示的 GUID。
類型: | Guid |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Name
依其名稱指定 Runspace。 您可以執行 Get-Runspace
以顯示 runspace 的名稱。
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Runspace
指定 runspace 物件。 為此參數提供值最簡單的方式是指定變數,其中包含篩選 Get-Runspace
命令的結果。
類型: | Runspace |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | True |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將 Get-Runspace
命令的結果傳送至 Debug-Runspace。
備註
Debug-Runspace
適用於處於已開啟狀態的 Runspace。 如果 Runspace 狀態從 Opened 變更為另一個狀態,該 Runspace 會自動從執行清單中移除。 只有在 Runspace 符合下列準則時,才會將 runspace 新增至執行中清單。
- 如果它來自 Invoke-Command;也就是說,它有
Invoke-Command
GUID 識別碼。 - 如果它來自
Debug-Runspace
;也就是說,它有Debug-Runspace
GUID 識別碼。 - 如果它來自PowerShell工作流程,且其工作流程作業標識碼與目前的使用中調試程式工作流程工作標識符相同。