Debug-Runspace (Microsoft.PowerShell.Utility)
Debug-Runspace
- Модуль:
- Microsoft.PowerShell.Utility
Запускает интерактивный сеанс отладки с пространством выполнения.
Синтаксис
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 открывает сеанс удаленного отладчика для пространства выполнения. Вы можете отлаживать сценарий пространства выполнения так же, как отлаживают сценарии удаленного сеанса.
Вы можете подключиться к ведущему процессу PowerShell только в том случае, если вы являетесь администратором на компьютере, на котором выполняется этот процесс, или запускаете сценарий, который хотите отладить. Кроме того, вы не можете войти в хост-процесс, выполняющий текущий сеанс PowerShell. Вы можете ввести только хост-процесс, выполняющий другой сеанс PowerShell.
Примеры
Пример 1. Отладка удаленного пространства выполнения
В этом примере вы отлаживаете пространство выполнения, открытое на удаленном компьютере WS10TestServer. В первой строке команды вы запускаете Get-Process на удаленном компьютере и фильтруете хост-процессы Windows PowerShell. В этом примере вы хотите отладить процесс с идентификатором 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. В третьей команде вы подключаетесь к хост-процессу Windows PowerShell ISE, работающему на удаленном сервере, запустив Enter-PSHostProcess и указав идентификатор хост-процесса, полученный в первой команде, 1152.
В четвертой команде вы перечисляете доступные пространства выполнения для процесса с идентификатором 1152, запуская Get-Runspace. Вы записываете идентификационный номер занятого пространства выполнения; он запускает сценарий, который вы хотите отладить.
В последней команде вы начинаете отладку открытого пространства выполнения, в котором выполняется сценарий TestWFVar1.ps1, запустив Debug-Runspace и идентифицировав пространство выполнения по его идентификатору, 2. , добавив параметр Id. Поскольку в сценарии есть точка останова, откроется отладчик.
Параметры
-BreakAll
Позволяет немедленно перейти к текущему местоположению при подключении отладчика.
Этот параметр был добавлен в PowerShell 7.2.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Confirm
Запрашивает подтверждение перед запуском командлета.
- Тип :
SwitchParameter
- Псевдонимы:
cf
- Позиция:
Именованный
- Значение по умолчанию:
True
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Id
Указывает идентификационный номер пространства выполнения. Вы можете запустить Get-Runspace, чтобы показать идентификаторы пространства выполнения.
- Тип :
Int32
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InstanceId
Указывает пространство выполнения по его идентификатору экземпляра, GUID, который можно просмотреть, запустив Get-Runspace.
- Тип :
Руководство
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Name
Указывает пространство выполнения по его имени. Вы можете запустить Get-Runspace, чтобы отобразить имена пространств выполнения.
- Тип :
String
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Runspace
Указывает объект пространства выполнения. Самый простой способ указать значение для этого параметра — указать переменную, содержащую результаты отфильтрованной команды Get-Runspace.
- Тип :
пространство выполнения
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-WhatIf
Показывает, что произойдет, если командлет запустится. Командлет не запускается.
- Тип :
SwitchParameter
- Псевдонимы:
wi
- Позиция:
Именованный
- Значение по умолчанию:
True
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
Пространство выполнения
В этот командлет можно передать результаты команды Get-Runspace.
Примечания
Debug-Runspace работает с пространствами выполнения, которые находятся в открытом состоянии. Если состояние пространства выполнения изменяется с «Открыто» на другое состояние, это пространство выполнения автоматически удаляется из рабочего списка. Пространство выполнения добавляется в текущий список только в том случае, если оно соответствует следующим критериям.
- Если оно исходит от Invoke-Command; то есть у него есть идентификатор GUID
Invoke-Command. - Если он поступает из
Debug-Runspace; то есть у него есть идентификатор GUIDDebug-Runspace. - Если оно поступает из рабочего процесса PowerShell и его идентификатор задания рабочего процесса совпадает с идентификатором текущего активного задания рабочего процесса отладчика.