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


Debug-Runspace

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

Синтаксис

RunspaceParameterSet (по умолчанию)

Debug-Runspace
    [-Runspace] <Runspace>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Debug-Runspace
    [-Name] <String>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

IdParameterSet

Debug-Runspace
    [-Id] <Int32>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

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
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Confirm

Запрашивает подтверждение перед запуском cmdlet.

Свойства параметра

Тип:SwitchParameter
Default value:True
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:cf

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Id

Указывает идентификатор пространства выполнения. Вы можете запустить Get-Runspace для отображения идентификаторов пространств выполнения.

Свойства параметра

Тип:Int32
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

IdParameterSet
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-InstanceId

Указывает пространство выполнения по идентификатору экземпляра, идентификатору GUID, который можно отобразить, выполнив Get-Runspace.

Свойства параметра

Тип:Guid
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

InstanceIdParameterSet
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Name

Задает пространство выполнения по имени. Чтобы отобразить имена пространств выполнения, можно запустить Get-Runspace.

Свойства параметра

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

NameParameterSet
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Runspace

Указывает объект runspace. Самый простой способ указать значение для этого параметра — указать переменную, содержащую результаты отфильтрованной команды Get-Runspace.

Свойства параметра

Тип:Runspace
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

RunspaceParameterSet
Position:0
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-WhatIf

Показывает, что произойдет, если командлет будет запущен. Командлет не запускается.

Свойства параметра

Тип:SwitchParameter
Default value:True
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:wi

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

Runspace

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

Примечания

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

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