Debug-Runspace

Запускает интерактивный сеанс отладки с пространством выполнения.

Синтаксис

Debug-Runspace
     [-Runspace] <Runspace>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Debug-Runspace
     [-Name] <String>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Debug-Runspace
     [-Id] <Int32>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Debug-Runspace
     [-InstanceId] <Guid>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Описание

Командлет Debug-Runspace запускает интерактивный сеанс отладки с локальным или удаленным активным пространством выполнения. Вы можете найти пространство выполнения, которое требуется выполнить отладку, сначала выполнив поиск Get-Process процессов, связанных с PowerShell, а затем Enter-PSHostProcess с идентификатором процесса, указанным в параметре Id для подключения к процессу, а затем Get-Runspace для перечисления пространств выполнения в процессе узла PowerShell.

После выбора пространства выполнения для отладки, если в данный момент выполняется команда или скрипт, или если скрипт остановился в точке останова, PowerShell открывает сеанс удаленного отладчика для пространства выполнения. Скрипт runspace можно отлаживать так же, как отлаживаемые скрипты удаленного сеанса.

Вы можете подключиться только к хост-процессу PowerShell, если вы являетесь администратором компьютера, на котором выполняется процесс, или выполняете скрипт, который требуется выполнить отладку. Кроме того, нельзя ввести хост-процесс, выполняющий текущий сеанс PowerShell. Можно ввести только хост-процесс, выполняющий другой сеанс PowerShell.

Примеры

Пример 1. Отладка удаленного пространства выполнения

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

PS C:\> [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:\> >

В этом примере выполняется отладка пространства выполнения, открытого на удаленном компьютере WS10TestServer. В первой строке команды выполняется на удаленном компьютере и фильтруются Get-Process для Windows PowerShell хост-процессов. В этом примере необходимо выполнить отладку процесса с идентификатором 1152, Windows PowerShell хост-процесс ISE.

Во второй команде выполняется Enter-PSSession запуск удаленного сеанса в WS10TestServer. В третьей команде выполняется присоединение к процессу узла ISE Windows PowerShell, выполняемого на удаленном сервереEnter-PSHostProcess, и указание идентификатора процесса узла, полученного в первой команде 1152.

В четвертой команде перечислены доступные пространства выполнения для идентификатора процесса 1152, выполнив команду Get-Runspace. Обратите внимание на идентификатор пространства выполнения "Занято"; он выполняет скрипт, который требуется выполнить отладку.

В последней команде вы начинаете отладку открытого пространства выполнения, выполняющего скрипт, TestWFVar1.ps1, выполнив и Debug-Runspaceопределив пространство выполнения по его идентификатору 2, добавив параметр Id . Так как в скрипте есть точка останова, откроется отладчик.

Параметры

-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

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

Runspace

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

Примечания

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

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