Debug-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>]
Описание
Командлет Debug-Runspace
запускает интерактивный сеанс отладки с локальным или удаленным активным пространством выполнения. Вы можете найти пространство выполнения, которое требуется выполнить отладку, сначала выполнив поиск Get-Process
процессов, связанных с PowerShell, а затем Enter-PSHostProcess
с идентификатором процесса, указанным в параметре Id для подключения к процессу, а затем Get-Runspace
для перечисления пространств выполнения в процессе узла PowerShell.
После выбора пространства выполнения для отладки, если в данный момент выполняется команда или скрипт, или если скрипт остановился в точке останова, PowerShell открывает сеанс удаленного отладчика для пространства выполнения. Скрипт runspace можно отлаживать так же, как отлаживаемые скрипты удаленного сеанса.
Вы можете подключиться только к хост-процессу PowerShell, если вы являетесь администратором компьютера, на котором выполняется процесс, или выполняете скрипт, который требуется выполнить отладку. Кроме того, нельзя ввести хост-процесс, выполняющий текущий сеанс PowerShell. Можно ввести только хост-процесс, выполняющий другой сеанс PowerShell.
Примеры
Пример 1. Отладка удаленного пространства выполнения
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:\> >
В этом примере выполняется отладка пространства выполнения, открытого на удаленном компьютере WS10TestServer. В первой строке команды выполняется на удаленном компьютере и фильтруются Get-Process
для Windows PowerShell хост-процессов. В этом примере необходимо выполнить отладку процесса с идентификатором 1152, Windows PowerShell хост-процесс ISE.
Во второй команде выполняется Enter-PSSession
запуск удаленного сеанса в WS10TestServer. В третьей команде выполняется присоединение к процессу узла ISE Windows PowerShell, выполняемого на удаленном сервереEnter-PSHostProcess
, и указание идентификатора процесса узла, полученного в первой команде 1152.
В четвертой команде перечислены доступные пространства выполнения для идентификатора процесса 1152, выполнив команду Get-Runspace
.
Обратите внимание на идентификатор пространства выполнения "Занято"; он выполняет скрипт, который требуется выполнить отладку.
В последней команде вы начинаете отладку открытого пространства выполнения, выполняющего скрипт, TestWFVar1.ps1, выполнив и Debug-Runspace
определив пространство выполнения по его идентификатору 2, добавив параметр Id . Так как в скрипте есть точка останова, откроется отладчик.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Указывает идентификатор пространства выполнения. Можно запустить Get-Runspace
для отображения идентификаторов пространств выполнения.
Type: | Int32 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InstanceId
Указывает пространство выполнения по идентификатору экземпляра, GUID, который можно отобразить, выполнив команду Get-Runspace
.
Type: | Guid |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Задает пространство выполнения по его имени. Можно запустить Get-Runspace
, чтобы отобразить имена пространств выполнения.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Runspace
Указывает объект runspace. Самый простой способ указать значение для этого параметра — указать переменную, содержащую результаты отфильтрованной Get-Runspace
команды.
Type: | Runspace |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
Результаты Get-Runspace
команды можно передать в Debug-Runspace.
Примечания
Debug-Runspace
работает в пространствах выполнения, которые находятся в состоянии "Открыто". Если состояние пространства выполнения изменяется из открытого в другое состояние, это пространство выполнения автоматически удаляется из списка выполнения. Пространство выполнения добавляется в список выполнения только в том случае, если он соответствует следующим критериям.
- Если он поступает из Invoke-Command; то есть идентификатор
Invoke-Command
GUID. - Если он поступает из
Debug-Runspace
; то есть имеетDebug-Runspace
идентификатор GUID. - Если он поступает из рабочего процесса PowerShell, а его идентификатор задания рабочего процесса совпадает с идентификатором текущего активного рабочего процесса отладчика.