Enter-PSHostProcess

Conectar a y entra en una sesión interactiva con un proceso local.

Syntax

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
     -CustomPipeName <String>
     [<CommonParameters>]

Description

El Enter-PSHostProcess cmdlet se conecta a y entra en una sesión interactiva con un proceso local. A partir de PowerShell 6.2, este cmdlet se admite en plataformas que no son de Windows.

En lugar de crear un nuevo proceso para hospedar PowerShell y ejecutar una sesión remota, la sesión interactiva remota se ejecuta en un proceso existente que ya ejecuta PowerShell. Al interactuar con una sesión remota en un proceso especificado, puede enumerar los espacios de ejecución en ejecución y, a continuación, seleccionar un espacio de ejecución para depurar mediante la ejecución Debug-Runspace de o Enable-RunspaceDebug.

El proceso que desea especificar debe hospedar PowerShell (System.Management.Automation.dll). Debe ser miembro del grupo de Administración istrators en el equipo en el que se encuentra el proceso o debe ser el usuario que ejecuta el script que inició el proceso.

Después de seleccionar un espacio de ejecución para depurar, se abre una sesión de depuración remota para el espacio de ejecución si está ejecutando actualmente un comando o se detiene en el depurador. Después, puede depurar el script de espacio de ejecución de la misma manera que depuraría otros scripts de sesión remota.

Desasocie de una sesión de depuración y, a continuación, la sesión interactiva con el proceso, ejecutando salir dos veces o detener la ejecución del script ejecutando el comando quit del depurador existente.

Si especifica un proceso mediante el parámetro Name y solo hay un proceso encontrado con el nombre especificado, se escribe el proceso. Si se encuentra más de un proceso con el nombre especificado, PowerShell devuelve un error y enumera todos los procesos encontrados con el nombre especificado.

Para admitir la asociación a procesos en equipos remotos, el Enter-PSHostProcess cmdlet está habilitado en un equipo remoto especificado, de modo que pueda asociarse a un proceso local dentro de una sesión remota de PowerShell.

Ejemplos

Parte 1 del ejemplo: Iniciar la depuración de un espacio de ejecución en el proceso de PowerShell ISE

En este ejemplo, ejecutará Enter-PSHostProcess desde la consola de PowerShell para escribir el proceso de PowerShell ISE. En la sesión interactiva resultante, puede encontrar un espacio de ejecución que quiera depurar ejecutando Get-Runspacey, a continuación, depurar el espacio de ejecución.

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

Parte 2 de ejemplo: Depuración de un espacio de ejecución específico

A continuación, depure el identificador 4 del espacio de ejecución, que ejecuta el script de ejecución prolongada de otro usuario. En la lista devuelta de Get-Runspace, tenga en cuenta que el estado del espacio de ejecución está abierto y disponibilidad está ocupado, lo que significa que el espacio de ejecución sigue ejecutando el script de ejecución prolongada. Los objetos de espacio de ejecución devueltos por Get-Runspace también tienen una propiedad NoteProperty denominada ScriptStackTrace de la pila de comandos en ejecución, si está disponible.

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

Inicie una sesión de depuración interactiva con este espacio de ejecución mediante la ejecución del Debug-Runspace cmdlet .

Parte 3 del ejemplo: Finalizar la sesión de depuración y salir

Una vez finalizada la depuración, permita que el script continúe ejecutándose sin el depurador adjunto mediante la ejecución del comando exit debugger. Como alternativa, puede salir del depurador con los comandos q o Stop.

Cuando haya terminado de trabajar en el proceso, salga del proceso ejecutando el Exit-PSHostProcess cmdlet . Esto le devuelve al símbolo del PS C:\> sistema.

[Process:346]: [RSDBG: 3]: PS C:\> exit
[Process:1520]: PS C:\>
[Process:1520]: PS C:\>  Exit-PSHostProcess
PS C:\>

Parámetros

-AppDomainName

Especifica un nombre de dominio de aplicación al que conectarse si se omite, usa DefaultAppDomain. Use Get-PSHostProcessInfo para mostrar los nombres de dominio de la aplicación.

Type:String
Position:1
Default value:DefaultAppDomain
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CustomPipeName

Obtiene o establece el nombre de canalización con nombre personalizado al que se va a conectar. Normalmente se usa junto con pwsh -CustomPipeName.

Este parámetro se introdujo en PowerShell 6.2.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-HostProcessInfo

Especifica un objeto PSHostProcessInfo al que se puede conectar con PowerShell. Use Get-PSHostProcessInfo para obtener el objeto .

Type:PSHostProcessInfo
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Id

Especifica un proceso por el identificador de proceso. Para obtener un identificador de proceso, ejecute el Get-Process cmdlet .

Type:Int32
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

Especifica un proceso por el nombre del proceso. Para obtener un nombre de proceso, ejecute el Get-Process cmdlet . También puede obtener nombres de proceso en el cuadro de diálogo Propiedades de un proceso en el Administrador de tareas.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Process

Especifica un proceso por el objeto process. La manera más sencilla de usar este parámetro es guardar los resultados de un Get-Process comando que devuelve el proceso que desea escribir en una variable y, a continuación, especificar la variable como el valor de este parámetro.

Type:Process
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Entradas

Process

Notas

Enter-PSHostProcess no puede escribir el proceso de la sesión de PowerShell en la que ejecuta el comando . Sin embargo, puede escribir el proceso de otra sesión de PowerShell o una sesión de PowerShell ISE que se ejecuta al mismo tiempo que la sesión en la que se ejecuta Enter-PSHostProcess.

Enter-PSHostProcess solo puede especificar los procesos que hospedan PowerShell. Es decir, han cargado el motor de PowerShell.

Para salir de un proceso desde el proceso, escriba exit y presione Entrar.

Antes de PowerShell 7.1, la comunicación remota a través de SSH no admitía sesiones remotas de segundo salto. Esta capacidad se limitaba a las sesiones que usaban WinRM. PowerShell 7.1 permite que Enter-PSSession y Enter-PSHostProcess funcionen desde cualquier sesión remota interactiva.