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