Delen via


Enter-PSHostProcess

Maakt verbinding met en gaat in een interactieve sessie met een lokaal proces.

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

De Enter-PSHostProcess cmdlet maakt verbinding met en gaat in een interactieve sessie met een lokaal proces. Vanaf PowerShell 6.2 wordt deze cmdlet ondersteund op niet-Windows-platforms.

In plaats van een nieuw proces te maken voor het hosten van PowerShell en het uitvoeren van een externe sessie, wordt de externe, interactieve sessie uitgevoerd in een bestaand proces waarop PowerShell al wordt uitgevoerd. Wanneer u interactie hebt met een externe sessie in een opgegeven proces, kunt u actieve runspaces opsommen en vervolgens een runspace selecteren om fouten op te sporen door of Enable-RunspaceDebuguit te voerenDebug-Runspace.

Het proces dat u wilt invoeren, moet PowerShell hosten (System.Management.Automation.dll). U moet lid zijn van de groep Administrators op de computer waarop het proces is 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 is gestopt in het foutopsporingsprogramma. Vervolgens kunt u fouten in het runspace-script opsporen op dezelfde manier als bij andere externe sessiescripts.

Maak los van een foutopsporingssessie en vervolgens de interactieve sessie met het proces door twee keer afsluiten uit te voeren of stop de uitvoering van het script door de bestaande opdracht voor het afsluiten van het foutopsporingsprogramma 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 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 Enter-PSHostProcess cmdlet ingeschakeld op een opgegeven externe computer, zodat u kunt koppelen aan een lokaal proces binnen een externe PowerShell-sessie.

Voorbeelden

Voorbeeld Deel 1: Foutopsporing starten in een runspace binnen het PowerShell ISE-proces

In dit voorbeeld voert Enter-PSHostProcess u uit vanuit de PowerShell-console om het PowerShell ISE-proces in te voeren. In de resulterende interactieve sessie kunt u een runspace vinden die u wilt opsporen door uit te voeren Get-Runspaceen vervolgens fouten in de runspace op te sporen.

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

Voorbeeld deel 2: Fouten opsporen in een specifieke runspace

Vervolgens gaat u fouten opsporen in runspace-id 4, waarmee het langlopende script van een andere gebruiker wordt uitgevoerd. In de lijst die wordt geretourneerd van Get-Runspace, ziet u dat de runspacestatus Geopend is en Beschikbaarheid Bezet is, wat betekent dat de runspace nog steeds het langlopende script uitvoert. De runspace-objecten die worden geretourneerd door Get-Runspace , hebben ook een NoteProperty met de naam ScriptStackTrace van de actieve opdrachtstack, indien beschikbaar.

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

Start een interactieve foutopsporingssessie met deze runspace door de Debug-Runspace cmdlet uit te voeren.

Voorbeeld deel 3: De foutopsporingssessie voltooien en afsluiten

Nadat u klaar bent met foutopsporing, staat u toe dat het script wordt uitgevoerd zonder dat het foutopsporingsprogramma is gekoppeld door de opdracht het foutopsporingsprogramma afsluiten uit te voeren. U kunt het foutopsporingsprogramma ook afsluiten met de q- of Stop-opdrachten.

Wanneer u klaar bent met het proces, sluit u het proces af door de Exit-PSHostProcess cmdlet uit te voeren. Hiermee keert u terug naar de PS C:\> prompt.

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

Parameters

-AppDomainName

Hiermee geeft u een toepassingsdomeinnaam op waarmee verbinding moet worden gemaakt als dit wordt weggelaten, wordt DefaultAppDomain gebruikt. Gebruik Get-PSHostProcessInfo om de domeinnamen van de toepassing weer te geven.

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

-CustomPipeName

Hiermee wordt de naam van de aangepaste benoemde pipe opgehaald of ingesteld waarmee verbinding moet worden gemaakt. Dit wordt meestal gebruikt in combinatie met pwsh -CustomPipeName.

Deze parameter is geïntroduceerd in PowerShell 6.2.

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

-HostProcessInfo

Hiermee geeft u een PSHostProcessInfo-object op waarmee verbinding kan worden gemaakt met PowerShell. Gebruik Get-PSHostProcessInfo om het object op te halen.

Type:PSHostProcessInfo
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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
Required:True
Accept pipeline input:False
Accept wildcard characters: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 in het dialoogvenster Eigenschappen van een proces in Taakbeheer.

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

-Process

Hiermee geeft u een proces door het procesobject. De eenvoudigste manier om deze parameter te gebruiken, is door de resultaten op te slaan van een opdracht die het Get-Process proces retourneert dat u wilt invoeren in een variabele en vervolgens de variabele op te geven als de waarde van deze parameter.

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

Invoerwaarden

Process

Notities

Enter-PSHostProcess kan het proces van de PowerShell-sessie waarin u de opdracht uitvoert, niet invoeren. U kunt echter het proces van een andere PowerShell-sessie of een PowerShell ISE-sessie invoeren die tegelijkertijd wordt uitgevoerd als de sessie waarin u uitvoert Enter-PSHostProcess.

Enter-PSHostProcess kan alleen de processen invoeren die als host fungeren voor PowerShell. Dat wil gezegd, ze hebben de PowerShell-engine geladen.

Als u een proces vanuit het proces wilt afsluiten, typt u afsluiten en drukt u op Enter.

Voorafgaand aan PowerShell 7.1 werd externe externe sessies via SSH niet ondersteund. Deze mogelijkheid was beperkt tot sessies met WinRM. Met PowerShell 7.1 kunt Enter-PSSession u en Enter-PSHostProcess vanuit elke interactieve externe sessie werken.