Enter-PSHostProcess
Maakt verbinding met een interactieve sessie en voert deze in met een lokaal proces.
Syntaxis
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>]
Description
De cmdlet Enter-PSHostProcess maakt verbinding met een interactieve sessie en voert deze in met een lokaal proces.
In plaats van een nieuw proces te maken om Windows PowerShell te hosten en een externe sessie uit te voeren, wordt de externe, interactieve sessie uitgevoerd in een bestaand proces waarop Windows PowerShell al wordt uitgevoerd. Wanneer u communiceert met een externe sessie in een opgegeven proces, kunt u actieve runspaces inventariseren en vervolgens een runspace selecteren om fouten op te sporen door Debug-Runspace of Enable-RunspaceDebug uit te voeren.
Het proces dat u wilt invoeren, moet Windows PowerShell (System.Management.Automation.dll) hosten. U moet lid zijn van de groep Administrators op de computer waarop het proces wordt gevonden, of u moet de gebruiker zijn die het script uitvoert waarmee het proces is gestart.
Nadat u een runspace hebt geselecteerd om fouten op te sporen, wordt er een externe foutopsporingssessie geopend voor de runspace als deze momenteel een opdracht uitvoert of wordt gestopt in het foutopsporingsprogramma. Vervolgens kunt u fouten opsporen in het runspace-script op dezelfde manier als u fouten in andere externe sessiescripts zou opsporen.
Loskoppelen van een foutopsporingssessie en vervolgens de interactieve sessie met het proces, door twee keer afsluiten uit te voeren of de uitvoering van scripts stoppen door de bestaande foutopsporingsprogramma-opdracht uit te voeren.
Als u een proces opgeeft met behulp van de parameter Name en er slechts één proces is gevonden met de opgegeven naam, wordt het proces ingevoerd. Als er meer dan één proces met de opgegeven naam wordt gevonden, retourneert Windows PowerShell een fout en worden alle processen weergegeven die zijn gevonden met de opgegeven naam.
Ter ondersteuning van het koppelen aan processen op externe computers is de cmdlet Enter-PSHostProcess ingeschakeld op een opgegeven externe computer, zodat u verbinding kunt maken met een lokaal proces binnen een externe Windows PowerShell-sessie.
Voorbeelden
Voorbeeld 1: Foutopsporing starten in een runspace binnen het Windows PowerShell ISE-proces
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:\>
Parameters
-AppDomainName
Type: | String |
Position: | 1 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-HostProcessInfo
Type: | PSHostProcessInfo |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Id
Hiermee geeft u een proces op basis van de proces-id. Voer de Get-Process cmdlet uit om een proces-id op te halen.
Type: | Int32 |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Name
Hiermee geeft u een proces op basis van de procesnaam. Voer de Get-Process-cmdlet uit om een procesnaam op te halen. U kunt ook procesnamen ophalen uit het dialoogvenster Eigenschappen van een proces in Taakbeheer.
Type: | String |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Process
Hiermee geeft u een proces door het procesobject. De eenvoudigste manier om deze parameter te gebruiken, is het opslaan van de resultaten van een Get-Process opdracht die het proces retourneert dat u in een variabele wilt invoeren en geef vervolgens de variabele op als de waarde van deze parameter.
Type: | Process |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
Invoerwaarden
Notities
Enter-PSHostProcess kan het proces van de Windows PowerShell-sessie waarin u de opdracht uitvoert, niet invoeren. U kunt echter het proces van een andere Windows PowerShell-sessie of een Windows PowerShell ISE-sessie invoeren die tegelijkertijd wordt uitgevoerd als de sessie waarin u Enter-PSHostProcessuitvoert.
Enter-PSHostProcess kunnen alleen processen invoeren die als host fungeren voor Windows PowerShell. Dat wil gezegd, ze hebben de Windows PowerShell-engine geladen.
Als u een proces wilt afsluiten vanuit het proces, typt u afsluiten en drukt u op Enter.