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>]
Description
指令小程式會 Debug-Runspace 啟動與本地或遠端活躍跑道空間的互動式除錯會話。 你可以先執行 Get-Process 與 PowerShell 相關的程序,然後 Enter-PSHostProcess 用 Id 參數指定的程序 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,並指定你在第一個指令中取得的主機程序 ID 來連接遠端伺服器上的 Windows PowerShell ISE 主機程序,該程序 ID 為 1152。
在第四個指令中,你透過執行 Get-Runspace來列出程序 ID 1152 的可用跑道空間。
你注意到忙碌跑位的 ID 號碼;它正在執行你想要除錯的腳本。
在最後一個指令中,你開始除錯一個正在執行腳本的 TestWFVar1.ps1已開啟跑道空間,方法是執行 Debug-Runspace,並透過 ID 2 來識別跑道空間,並加上 Id 參數。 因為腳本中有中斷點,除錯器就會被打開。
參數
-BreakAll
這樣除錯器掛鉤後,你就能立刻在當前位置中斷。
此參數已在PowerShell 7.2中新增。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | True |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 參見 |
參數集
(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 指定跑道空間,一個 GUID,你可以透過執行 Get-Runspace來顯示。
參數屬性
| 類型: | 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 適用於處於 Open 狀態的跑道空間。 如果跑道空間狀態從「已開啟」變成「另一個」狀態,該跑道空間會自動從執行清單中移除。 只有符合以下條件時,跑程空間才會被加入執行清單。
- 如果是來自 Invoke-Command;也就是說,它有一個
Invoke-CommandGUID ID。 - 如果是來自
Debug-Runspace;也就是說,它有Debug-RunspaceGUID ID。 - 如果它來自 PowerShell 工作流程,且其工作流程工作 ID 與目前活躍的除錯器工作 ID 相同,