Enter-PSHostProcess
Si connette a e entra in una sessione interattiva con un processo locale.
Sintassi
ProcessIdParameterSet (Impostazione predefinita)
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>]
Descrizione
Il cmdlet Enter-PSHostProcess si connette a ed entra in una sessione interattiva con un processo locale.
Anziché creare un nuovo processo per ospitare PowerShell ed eseguire una sessione remota, la sessione interattiva remota viene eseguita in un processo esistente che esegue già PowerShell. Quando si interagisce con una sessione remota in un processo specificato, è possibile enumerare gli spazi di esecuzione e quindi selezionare uno spazio di esecuzione di cui eseguire il debug eseguendo Debug-Runspace o Enable-RunspaceDebug.
Il processo da immettere deve ospitare PowerShell (System.Management.Automation.dll). È necessario essere un membro del gruppo Administrators nel computer in cui viene trovato il processo oppure è necessario essere l'utente che esegue lo script che ha avviato il processo.
Dopo aver selezionato uno spazio di esecuzione per il debug, viene aperta una sessione di debug remoto per lo spazio di esecuzione se è attualmente in esecuzione un comando o viene arrestata nel debugger. È quindi possibile eseguire il debug dello script dello spazio di esecuzione nello stesso modo in cui si eseguirà il debug di altri script di sessione remota.
Scollegarsi da una sessione di debug e quindi dalla sessione interattiva con il processo, eseguendo exit due volte o arrestare l'esecuzione dello script eseguendo il comando esistente di chiusura del debugger.
Se si specifica un processo usando il parametro nome e viene trovato un solo processo con il nome specificato, viene immesso il processo. Se vengono trovati più processi con il nome specificato, PowerShell restituisce un errore ed elenca tutti i processi trovati con il nome specificato.
Per supportare il collegamento ai processi nei computer remoti, il cmdlet Enter-PSHostProcess è abilitato in un computer remoto specificato, in modo da potersi collegare a un processo locale all'interno di una sessione remota di PowerShell.
Esempio
Parte 1 di esempio: Avviare il debug di uno spazio di esecuzione all'interno del processo di PowerShell ISE
In questo esempio si esegue Enter-PSHostProcess dall'interno della console di PowerShell per immettere il processo di PowerShell ISE. Nella sessione interattiva risultante è possibile trovare uno spazio di esecuzione di cui eseguire il debug eseguendo Get-Runspacee quindi eseguire il debug dello spazio di esecuzione.
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 di esempio: Eseguire il debug di uno spazio di esecuzione specifico
Eseguire quindi il debug dell'ID dello spazio di esecuzione 4, che esegue lo script a esecuzione prolungata di un altro utente. Dall'elenco restituito da Get-Runspace, si noti che lo spazio di esecuzione Stato è Aperto e disponibilità è Occupato, ovvero lo spazio di esecuzione sta ancora eseguendo lo script a esecuzione prolungata. Gli oggetti dello spazio di esecuzione restituiti da Get-Runspace hanno anche un NoteProperty denominato ScriptStackTrace dello stack di comandi in esecuzione, se disponibile.
[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:\>
Avviare una sessione di debug interattiva con questo spazio di esecuzione eseguendo il cmdlet Debug-Runspace.
Parte 3 di esempio: Completare la sessione di debug e uscire
Al termine del debug, consentire all'esecuzione dello script senza il debugger collegato eseguendo il comando exit debugger. In alternativa, è possibile uscire dal debugger con i comandi q o Stop.
Al termine del processo, uscire dal processo eseguendo il cmdlet Exit-PSHostProcess. Verrà visualizzata la richiesta di PS C:\>.
[Process:346]: [RSDBG: 3]: PS C:\> exit
[Process:1520]: PS C:\>
[Process:1520]: PS C:\> Exit-PSHostProcess
PS C:\>
Parametri
-AppDomainName
Specifica un nome di dominio dell'applicazione a cui connettersi se omesso, usa DefaultAppDomain. Usare Get-PSHostProcessInfo per visualizzare i nomi di dominio dell'applicazione.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | DefaultAppDomain |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 1 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-HostProcessInfo
Specifica un oggetto PSHostProcessInfo a cui è possibile connettersi con PowerShell. Utilizzare Get-PSHostProcessInfo per ottenere l'oggetto .
Proprietà dei parametri
| Tipo: | PSHostProcessInfo |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
PSHostProcessInfoParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Id
Specifica un processo in base all'ID processo. Per ottenere un ID processo, eseguire il cmdlet Get-Process.
Proprietà dei parametri
| Tipo: | Int32 |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ProcessIdParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Name
Specifica un processo in base al nome del processo. Per ottenere un nome di processo, eseguire il cmdlet Get-Process. È anche possibile ottenere nomi di processo dalla finestra di dialogo Proprietà di un processo in Gestione attività.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ProcessNameParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Process
Specifica un processo dall'oggetto processo. Il modo più semplice per usare questo parametro consiste nel salvare i risultati di un comando Get-Process che restituisce il processo che si vuole immettere in una variabile e quindi specificare la variabile come valore di questo parametro.
Proprietà dei parametri
| Tipo: | Process |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ProcessParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
Process
Note
Enter-PSHostProcess non è possibile immettere il processo della sessione di PowerShell in cui si esegue il comando. È tuttavia possibile immettere il processo di un'altra sessione di PowerShell o di una sessione di PowerShell ISE in esecuzione contemporaneamente alla sessione in cui si esegue Enter-PSHostProcess.
Enter-PSHostProcess possibile immettere solo i processi che ospitano PowerShell. Ovvero, hanno caricato il motore di PowerShell.
Per uscire da un processo dall'interno del processo, digitare uscire, quindi premere INVIO.