Enter-PSHostProcess
Подключается к интерактивному сеансу и входит в локальный процесс.
Синтаксис
Enter-PSHostProcess
[-Id] <Int32>
[[-AppDomainName] <String>]
[<CommonParameters>]
Enter-PSHostProcess
[-Process] <Process>
[[-AppDomainName] <String>]
[<CommonParameters>]
Enter-PSHostProcess
[-Name] <String>
[[-AppDomainName] <String>]
[<CommonParameters>]
Enter-PSHostProcess
[-HostProcessInfo] <PSHostProcessInfo>
[[-AppDomainName] <String>]
[<CommonParameters>]
Описание
Командлет Enter-PSHostProcess
подключается и вводится в интерактивный сеанс с локальным процессом.
Вместо создания нового процесса для размещения PowerShell и запуска удаленного сеанса удаленный интерактивный сеанс выполняется в существующем процессе, который уже работает под управлением PowerShell. При взаимодействии с удаленным сеансом в указанном процессе можно перечислить запущенные пространства выполнения, а затем выбрать пространство выполнения для отладки, выполнив либоDebug-Runspace
.Enable-RunspaceDebug
Процесс, который требуется ввести, должен размещать PowerShell (System.Management.Automation.dll). Вы должны быть членом группы администраторов на компьютере, на котором найден процесс, или вы должны быть пользователем, выполняющим скрипт, который запустил процесс.
После выбора пространства выполнения для отладки удаленный сеанс отладки открывается для пространства выполнения, если он выполняет команду или останавливается в отладчике. Затем можно выполнить отладку скрипта runspace таким же образом, как и для отладки других скриптов удаленного сеанса.
Отсоедините от сеанса отладки, а затем интерактивный сеанс с процессом, выполнив дважды выход или остановите выполнение скрипта, выполнив существующую команду выхода отладчика.
Если вы указываете процесс с помощью параметра Name , и существует только один процесс с указанным именем, процесс вводится. Если найдено несколько процессов с указанным именем, PowerShell возвращает ошибку и перечисляет все процессы, найденные с указанным именем.
Для поддержки присоединения к процессам на удаленных компьютерах Enter-PSHostProcess
командлет включен в указанном удаленном компьютере, чтобы подключиться к локальному процессу в удаленном сеансе PowerShell.
Примеры
Пример части 1. Запуск отладки пространства выполнения в процессе сценариев PowerShell
В этом примере вы запустите из Enter-PSHostProcess
консоли PowerShell, чтобы ввести процесс интегрированной службы сценариев PowerShell. В результирующем интерактивном сеансе можно найти пространство выполнения, которое требуется выполнить отладку Get-Runspace
, а затем выполнить отладку пространства выполнения.
PS C:\> Enter-PSHostProcess -Name powershell_ise
[Process:1520]: PS C:\> Get-Runspace
Id Name InstanceId State Availability
-- ------- ----------- ------ -------------
1 Runspace1 2d91211d-9cce-42f0-ab0e-71ac258b32b5 Opened Available
2 Runspace2 a3855043-cb16-424a-a616-685360c3763b Opened RemoteDebug
3 MyLocalRS 2236dbd8-2105-4dec-a15a-a27d0bfaacb5 Opened LocalDebug
4 MyRunspace 771356e9-8c44-4b70-9de5-dd17cb41e48e Opened Busy
5 Runspace8 3e517382-a97a-49ba-9c3c-fd21f6664288 Broken None
Пример части 2. Отладка определенного пространства выполнения
Затем выполните отладку идентификатора пространства выполнения 4, выполняющего длительный скрипт другого пользователя. Из списка, возвращенного из Get-Runspace
списка, обратите внимание, что состояние пространства выполнения открыто, а доступность занята, то есть пространство выполнения по-прежнему выполняет длительный скрипт. Объекты пространства выполнения, возвращаемые Get-Runspace
также с именем NoteProperty с именем ScriptStackTrace запускаемого стека команд, если они доступны.
[Process:1520]: PS C:\> (Get-Runspace -Id 4).ScriptStackTrace
Command Arguments Location
------- --------- --------
MyModuleWorkflowF1 {} TestNoFile3.psm1: line 6
WFTest1 {} TestNoFile2.ps1: line 14
TestNoFile2.ps1 {} TestNoFile2.ps1: line 22
<ScriptBlock> {} <No file>
[Process: 1520]: PS C:\> Debug-Runspace -Id 4
Hit Line breakpoint on 'C:\TestWFVar1.ps1:83'
At C:\TestWFVar1.ps1:83 char:1
+ $scriptVar = "Script Variable"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Process: 1520]: [RSDBG: 4]: PS C:\>
Запустите интерактивный сеанс отладки с этим пространством Debug-Runspace
выполнения, выполнив командлет.
Пример части 3. Завершение сеанса отладки и выход
Завершив отладку, разрешите скрипту продолжить работу без отладчика, подключенного с помощью команды отладчика выхода. Кроме того, можно выйти из отладчика с помощью команд q или Stop.
Завершив работу в процессе, выйдите из процесса, выполнив Exit-PSHostProcess
командлет. Это возвращает запрос PS C:\>
.
[Process:346]: [RSDBG: 3]: PS C:\> exit
[Process:1520]: PS C:\>
[Process:1520]: PS C:\> Exit-PSHostProcess
PS C:\>
Параметры
-AppDomainName
Указывает доменное имя приложения для подключения, если опущено, использует DefaultAppDomain. Используется Get-PSHostProcessInfo
для отображения доменных имен приложения.
Тип: | String |
Position: | 1 |
Default value: | DefaultAppDomain |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-HostProcessInfo
Указывает объект PSHostProcessInfo , к которому можно подключиться с Помощью PowerShell. Используется Get-PSHostProcessInfo
для получения объекта.
Тип: | PSHostProcessInfo |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Id
Задает процесс идентификатором процесса. Чтобы получить идентификатор процесса, выполните Get-Process
командлет.
Тип: | Int32 |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Name
Задает процесс по имени процесса. Чтобы получить имя процесса, выполните Get-Process
командлет. Вы также можете получить имена процессов из диалогового окна "Свойства" процесса в диспетчере задач.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Process
Указывает процесс объектом процесса. Самый простой способ использовать этот параметр — сохранить результаты Get-Process
команды, возвращающей процесс, который требуется ввести в переменную, а затем указать переменную в качестве значения этого параметра.
Тип: | Process |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
Входные данные
Примечания
Enter-PSHostProcess
не может ввести процесс сеанса PowerShell, в котором выполняется команда. Однако вы можете ввести процесс другого сеанса PowerShell или сеанса сценариев PowerShell, выполняющегося одновременно с сеансом, в котором выполняется.Enter-PSHostProcess
Enter-PSHostProcess
может ввести только те процессы, которые размещают PowerShell. То есть они загружали подсистему PowerShell.
Чтобы выйти из процесса, введите выход и нажмите клавишу ВВОД.
Связанные ссылки
PowerShell