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.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Confirm
Запрашивает подтверждение перед запуском командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | True |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Id
Указывает идентификатор пространства выполнения. Вы можете запустить Get-Runspace
для отображения идентификаторов пространств выполнения.
Тип: | Int32 |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InstanceId
Указывает пространство выполнения по идентификатору экземпляра, идентификатору GUID, который можно отобразить, выполнив Get-Runspace
.
Тип: | Guid |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Name
Задает пространство выполнения по имени. Чтобы отобразить имена пространств выполнения, можно запустить Get-Runspace
.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Runspace
Указывает объект runspace. Самый простой способ указать значение для этого параметра — указать переменную, содержащую результаты отфильтрованной команды Get-Runspace
.
Тип: | Runspace |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет, если командлет выполняется. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | True |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать результаты команды Get-Runspace
в этот командлет.
Примечания
Debug-Runspace
работает в пространствах выполнения, которые находятся в состоянии "Открыто". Если состояние пространства выполнения изменяется из открытого в другое состояние, это пространство выполнения автоматически удаляется из списка выполнения. Пространство выполнения добавляется в список выполнения только в том случае, если оно соответствует следующим критериям.
- Если он поступает из Invoke-Command; то есть он имеет идентификатор GUID
Invoke-Command
. - Если это происходит из
Debug-Runspace
; То есть он имеет идентификатор GUIDDebug-Runspace
. - Если он поступает из рабочего процесса PowerShell, а идентификатор задания рабочего процесса совпадает с идентификатором текущего активного рабочего процесса отладчика.
Связанные ссылки
PowerShell