Поиск по сайту:

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; то есть у него есть идентификатор GUID Debug-Runspace.
  • Если оно поступает из рабочего процесса PowerShell и его идентификатор задания рабочего процесса совпадает с идентификатором текущего активного задания рабочего процесса отладчика.