Enter-PSHostProcess
Maakt verbinding met een interactieve sessie en voert deze in met een lokaal proces.
Syntaxis
ProcessIdParameterSet (Standaard)
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>]
PipeNameParameterSet
Enter-PSHostProcess
-CustomPipeName <String>
[<CommonParameters>]
Description
De Enter-PSHostProcess cmdlet maakt verbinding met een interactieve sessie en voert deze in met een lokaal proces. Vanaf PowerShell 6.2 wordt deze cmdlet ondersteund op niet-Windows-platforms.
In plaats van een nieuw proces te maken om PowerShell te hosten en een externe sessie uit te voeren, 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 inventariseren en vervolgens een runspace selecteren om fouten op te sporen door Debug-Runspace of Enable-RunspaceDebuguit te voeren.
Het proces dat u wilt invoeren, moet als host fungeren voor PowerShell (System.Management.Automation.dll). 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 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 verbinding kunt maken met 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 u Enter-PSHostProcess uit vanuit de PowerShell-console om het PowerShell ISE-proces in te voeren. In de resulterende interactieve sessie vindt u een runspace die u wilt opsporen door Get-Runspaceuit te voeren en 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 van deel 2: Fouten opsporen in een specifieke runspace
Vervolgens wordt foutopsporing uitgevoerd in runspace ID 4, waarbij het langlopende script van een andere gebruiker wordt uitgevoerd. In de lijst die wordt geretourneerd uit Get-Runspace, moet u er rekening mee houden dat de runspace State is Geopend en Beschikbaarheid Bezet is, wat betekent dat de runspace nog steeds het langlopende script uitvoert. De runspace-objecten die door Get-Runspace worden geretourneerd, hebben ook een NoteProperty- genaamd 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 foutopsporingsprogramma afsluiten uit te voeren. U kunt ook het foutopsporingsprogramma afsluiten met de q- of Stop-opdrachten.
Wanneer u klaar bent met werken in 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 waarmee u verbinding wilt maken als u dit weglaat, wordt DefaultAppDomain-gebruikt. Gebruik Get-PSHostProcessInfo om de domeinnamen van de toepassing weer te geven.
Parametereigenschappen
| Type: | String |
| Default value: | DefaultAppDomain |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
ProcessIdParameterSet
| Position: | 1 |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
ProcessParameterSet
| Position: | 1 |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
ProcessNameParameterSet
| Position: | 1 |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
PSHostProcessInfoParameterSet
| Position: | 1 |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-CustomPipeName
Hiermee haalt u de aangepaste naam van de benoemde pipe op of stelt u deze in om verbinding te maken. Dit wordt meestal gebruikt in combinatie met pwsh -CustomPipeName.
Deze parameter is geïntroduceerd in PowerShell 6.2.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
PipeNameParameterSet
| Position: | Named |
| Verplicht: | True |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-HostProcessInfo
Hiermee geeft u een PSHostProcessInfo object waarmee u verbinding kunt maken met PowerShell. Gebruik Get-PSHostProcessInfo om het object op te halen.
Parametereigenschappen
| Type: | PSHostProcessInfo |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
PSHostProcessInfoParameterSet
| Position: | 0 |
| Verplicht: | True |
| Waarde uit pijplijn: | True |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Id
Specificeert een proces op basis van de proces-ID. Voer de Get-Process cmdlet uit om een proces-id op te halen.
Parametereigenschappen
| Type: | Int32 |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
ProcessIdParameterSet
| Position: | 0 |
| Verplicht: | True |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Name
Specificeert 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.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
ProcessNameParameterSet
| Position: | 0 |
| Verplicht: | True |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Process
Hiermee specificeert u een proces via 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.
Parametereigenschappen
| Type: | Process |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
ProcessParameterSet
| Position: | 0 |
| Verplicht: | True |
| Waarde uit pijplijn: | True |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
CommonParameters
Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.
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 Enter-PSHostProcessuitvoert.
Enter-PSHostProcess kan alleen die processen invoeren die als host fungeren voor PowerShell. Dat wil gezegd, ze hebben de PowerShell-engine geladen.
Als u een proces wilt afsluiten vanuit het proces, typt u afsluitenen drukt u op Enter-.
Voorafgaand aan PowerShell 7.1 biedt externe communicatie via SSH geen ondersteuning voor externe sessies van de tweede hop. Deze mogelijkheid was beperkt tot sessies met behulp van WinRM. Met PowerShell 7.1 kunnen Enter-PSSession en Enter-PSHostProcess werken vanuit een interactieve externe sessie.