Enter-PSHostProcess
Conecta-se e entra em uma sessão interativa com um processo local.
Sintaxe
ProcessIdParameterSet (Default)
Enter-PSHostProcess
[-Id] <Int32>
[[-AppDomainName] <String>]
[<CommonParameters>]
ProcessParameterSet
Enter-PSHostProcess
[-Process] <Process>
[[-AppDomainName] <String>]
[<CommonParameters>]
ProcessNameParameterSet
Enter-PSHostProcess
[-Name] <String>
[[-AppDomainName] <String>]
[<CommonParameters>]
PSHostProcessInfoParameterSet
Enter-PSHostProcess
[-HostProcessInfo] <PSHostProcessInfo>
[[-AppDomainName] <String>]
[<CommonParameters>]
Description
O cmdlet Enter-PSHostProcess
Em vez de criar um novo processo para hospedar o Windows PowerShell e executar uma sessão remota, a sessão remota e interativa é executada em um processo existente que já está executando o Windows PowerShell. Ao interagir com uma sessão remota em um processo especificado, você pode enumerar runspaces em execução e selecionar um runspace para depurar executando Debug-Runspace ou Enable-RunspaceDebug.
O processo que você deseja inserir deve estar hospedando o Windows PowerShell (System.Management.Automation.dll). Você deve ser um membro do grupo Administradores no computador no qual o processo foi encontrado ou deve ser o usuário que está executando o script que iniciou o processo.
Depois de selecionar um runspace para depurar, uma sessão de depuração remota será aberta para o runspace se ele estiver executando um comando no momento ou estiver parado no depurador. Em seguida, você pode depurar o script de runspace da mesma forma que depuraria outros scripts de sessão remota.
Desanexe de uma sessão de depuração e, em seguida, a sessão interativa com o processo, executando a saída duas vezes ou interrompa a execução do script executando o comando de encerramento do depurador existente.
Se você especificar um processo usando o parâmetro Name e houver apenas um processo encontrado com o nome especificado, o processo será inserido. Se mais de um processo com o nome especificado for encontrado, o Windows PowerShell retornará um erro e listará todos os processos encontrados com o nome especificado.
Para dar suporte à anexação a processos em computadores remotos, o cmdlet Enter-PSHostProcess está habilitado em um computador remoto especificado, para que você possa anexar a um processo local em uma sessão remota do Windows PowerShell.
Exemplos
Exemplo 1: iniciar a depuração de um runspace no processo ise do Windows PowerShell
Neste exemplo, você executa Enter-PSHostProcess de dentro do console do Windows PowerShell para entrar no processo ISE do Windows PowerShell. Na sessão interativa resultante, você pode encontrar um runspace que deseja depurar executando Get-Runspace e, em seguida, depurar o 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:\>
Parâmetros
-AppDomainName
O cmdlet Enter-PSHostProcess
Em vez de criar um novo processo para hospedar o Windows PowerShell e executar uma sessão remota, a sessão remota e interativa é executada em um processo existente que já está executando o Windows PowerShell. Ao interagir com uma sessão remota em um processo especificado, você pode enumerar runspaces em execução e selecionar um runspace para depurar executando Debug-Runspace ou Enable-RunspaceDebug.
O processo que você deseja inserir deve estar hospedando o Windows PowerShell (System.Management.Automation.dll). Você deve ser um membro do grupo Administradores no computador no qual o processo foi encontrado ou deve ser o usuário que está executando o script que iniciou o processo.
Depois de selecionar um runspace para depurar, uma sessão de depuração remota será aberta para o runspace se ele estiver executando um comando no momento ou estiver parado no depurador. Em seguida, você pode depurar o script de runspace da mesma forma que depuraria outros scripts de sessão remota.
Desanexe de uma sessão de depuração e, em seguida, a sessão interativa com o processo, executando a saída duas vezes ou interrompa a execução do script executando o comando de encerramento do depurador existente.
Se você especificar um processo usando o parâmetro Name e houver apenas um processo encontrado com o nome especificado, o processo será inserido. Se mais de um processo com o nome especificado for encontrado, o Windows PowerShell retornará um erro e listará todos os processos encontrados com o nome especificado.
Para dar suporte à anexação a processos em computadores remotos, o cmdlet Enter-PSHostProcess está habilitado em um computador remoto especificado, para que você possa anexar a um processo local em uma sessão remota do Windows PowerShell.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-HostProcessInfo
O cmdlet Enter-PSHostProcess
Em vez de criar um novo processo para hospedar o Windows PowerShell e executar uma sessão remota, a sessão remota e interativa é executada em um processo existente que já está executando o Windows PowerShell. Ao interagir com uma sessão remota em um processo especificado, você pode enumerar runspaces em execução e selecionar um runspace para depurar executando Debug-Runspace ou Enable-RunspaceDebug.
O processo que você deseja inserir deve estar hospedando o Windows PowerShell (System.Management.Automation.dll). Você deve ser um membro do grupo Administradores no computador no qual o processo foi encontrado ou deve ser o usuário que está executando o script que iniciou o processo.
Depois de selecionar um runspace para depurar, uma sessão de depuração remota será aberta para o runspace se ele estiver executando um comando no momento ou estiver parado no depurador. Em seguida, você pode depurar o script de runspace da mesma forma que depuraria outros scripts de sessão remota.
Desanexe de uma sessão de depuração e, em seguida, a sessão interativa com o processo, executando a saída duas vezes ou interrompa a execução do script executando o comando de encerramento do depurador existente.
Se você especificar um processo usando o parâmetro Name e houver apenas um processo encontrado com o nome especificado, o processo será inserido. Se mais de um processo com o nome especificado for encontrado, o Windows PowerShell retornará um erro e listará todos os processos encontrados com o nome especificado.
Para dar suporte à anexação a processos em computadores remotos, o cmdlet Enter-PSHostProcess está habilitado em um computador remoto especificado, para que você possa anexar a um processo local em uma sessão remota do Windows PowerShell.
Propriedades do parâmetro
| Tipo: | PSHostProcessInfo |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
PSHostProcessInfoParameterSet
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Id
Especifica um processo pela ID do processo. Para obter uma ID do processo, execute o cmdlet Get-Process.
Propriedades do parâmetro
| Tipo: | Int32 |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ProcessIdParameterSet
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Name
Especifica um processo pelo nome do processo. Para obter um nome de processo, execute o cmdlet Get-Process. Você também pode obter nomes de processo na caixa de diálogo Propriedades de um processo no Gerenciador de Tarefas.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ProcessNameParameterSet
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Process
Especifica um processo pelo objeto de processo. A maneira mais simples de usar esse parâmetro é salvar os resultados de um comando Get-Process que retorna o processo que você deseja inserir em uma variável e especificar a variável como o valor desse parâmetro.
Propriedades do parâmetro
| Tipo: | Process |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ProcessParameterSet
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
Process
Observações
Enter-PSHostProcess não pode inserir o processo da sessão do Windows PowerShell na qual você está executando o comando. No entanto, você pode inserir o processo de outra sessão do Windows PowerShell ou uma sessão ISE do Windows PowerShell em execução ao mesmo tempo que a sessão na qual você está executando Enter-PSHostProcess.
Enter-PSHostProcess pode inserir somente os processos que hospedam o Windows PowerShell. Ou seja, eles carregaram o mecanismo do Windows PowerShell.
Para sair de um processo de dentro do processo, digite sair e pressione Enter.