Поделиться через


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

Входные данные

Runspace

Вы можете передать результаты команды Get-Runspace в этот командлет.

Примечания

Debug-Runspace работает в пространствах выполнения, которые находятся в состоянии "Открыто". Если состояние пространства выполнения изменяется из открытого в другое состояние, это пространство выполнения автоматически удаляется из списка выполнения. Пространство выполнения добавляется в список выполнения только в том случае, если оно соответствует следующим критериям.

  • Если он поступает из Invoke-Command; то есть он имеет идентификатор GUID Invoke-Command.
  • Если это происходит из Debug-Runspace; То есть он имеет идентификатор GUID Debug-Runspace.
  • Если он поступает из рабочего процесса PowerShell, а идентификатор задания рабочего процесса совпадает с идентификатором текущего активного рабочего процесса отладчика.