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


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>]

Описание

Командлет ВВОД-PSHostProcess подключается к интерактивному сеансу и вводится в интерактивный сеанс с локальным процессом.

Вместо создания нового процесса для размещения Windows PowerShell и запуска удаленного сеанса удаленный интерактивный сеанс выполняется в существующем процессе, который уже работает под управлением Windows PowerShell. При взаимодействии с удаленным сеансом в указанном процессе можно перечислить запущенные пространства выполнения, а затем выбрать пространство выполнения для отладки, выполнив Debug-Runspace или Enable-RunspaceDebug.

Процесс, который необходимо ввести, должен размещать Windows PowerShell (System.Management.Automation.dll). Вы должны быть членом группы администраторов на компьютере, на котором найден процесс, или вы должны быть пользователем, выполняющим скрипт, который запустил процесс.

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

Отсоедините от сеанса отладки, а затем интерактивный сеанс с процессом, выполнив дважды выход или остановите выполнение скрипта, выполнив существующую команду выхода отладчика.

Если вы указываете процесс с помощью параметра Name, и существует только один процесс с указанным именем, процесс вводится. Если найдено несколько процессов с указанным именем, Windows PowerShell возвращает ошибку и перечисляет все процессы, найденные с указанным именем.

Для поддержки подключения к процессам на удаленных компьютерах командлет ВВОД-PSHostProcess включен в указанном удаленном компьютере, чтобы подключиться к локальному процессу в удаленном сеансе Windows PowerShell.

Примеры

Пример 1. Запуск отладки пространства выполнения в процессе среды сценариев Windows PowerShell

In this example, you run **Enter-PSHostProcess** from within the Windows PowerShell console to enter the Windows PowerShell ISE process. In the resulting interactive session, you can find a runspace that you want to debug by running Get-Runspace, and then debug the runspace.
PS C:\> Enter-PSHostProcess -Name powershell_ise
[Process:1520]: PS C:\Test\Documents>

Next, get available runspaces within the process you have entered.
PS C:\> [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

The runspace objects returned by **Get-Runspace** also have a NoteProperty called **ScriptStackTrace** of the running command stack, if available.Next, debug runspace ID 4, that is running another user's long-running script. From the list returned from **Get-Runspace**, note that the runspace state is **Opened**, and **Availability** is **Busy**, meaning that the runspace is still running the long-running script.
PS C:\> [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>

Start an interactive debugging session with this runspace by running the Debug-Runspace cmdlet.
PS C:\> [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:\> >

After you are finished debugging, allow the script to continue running without the debugger attached by running the **exit** debugger command. Alternatively, you can quit the debugger with the **q** or **Stop** commands.
PS C:\> [Process:346]: [RSDBG: 3]: PS C:\> > exit
[Process:1520]: PS C:\>

When you are finished working in the process, exit the process by running the Exit-PSHostProcess cmdlet. This returns you to the PS C:\> prompt.
PS C:\> [Process:1520]: PS C:\>  Exit-PSHostProcess
PS C:\>

Параметры

-AppDomainName

Тип:String
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HostProcessInfo

Тип: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

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

Process

Примечания

  • ВВОД-PSHostProcess не может ввести процесс сеанса Windows PowerShell, в котором выполняется команда. Однако можно ввести процесс другого сеанса Windows PowerShell или сеанс среды сценариев Windows PowerShell, который выполняется одновременно с сеансом, в котором выполняется ВВОД-PSHostProcess.

    Ввод-PSHostProcess может ввести только те процессы, которые размещают Windows PowerShell. То есть они загружали подсистему Windows PowerShell.

    Чтобы выйти из процесса, введите выход и нажмите клавишу ВВОД.