Enter-PSHostProcess
Ansluter till och går in i en interaktiv session med en lokal process.
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>]
Description
Cmdleten Enter-PSHost Process ansluter till och går in i en interaktiv session med en lokal process.
I stället för att skapa en ny process som värd för Windows PowerShell och köra en fjärrsession körs den interaktiva fjärrsessionen i en befintlig process som redan kör Windows PowerShell. När du interagerar med en fjärrsession i en angiven process kan du räkna upp körningskörningar och sedan välja ett körningsutrymme som ska felsökas genom att köra antingen Debug-Runspace eller Enable-RunspaceDebug.
Den process som du vill ange måste vara värd för Windows PowerShell (System.Management.Automation.dll). Du måste antingen vara medlem i gruppen Administratörer på den dator där processen hittas, eller så måste du vara den användare som kör skriptet som startade processen.
När du har valt ett körningsutrymme som ska felsökas öppnas en fjärrfelsökningssession för körningsytan om den antingen kör ett kommando eller stoppas i felsökningsprogrammet. Du kan sedan felsöka runspace-skriptet på samma sätt som du felsöker andra fjärrsessionsskript.
Koppla från en felsökningssession och sedan den interaktiva sessionen med processen genom att köra avsluta två gånger eller stoppa skriptkörningen genom att köra det befintliga kommandot för att avsluta felsökningsprogrammet.
Om du anger en process med parametern Name och det bara finns en process med det angivna namnet anges processen. Om mer än en process med det angivna namnet hittas returnerar Windows PowerShell ett fel och visar en lista över alla processer som hittades med det angivna namnet.
För att stödja anslutning till processer på fjärrdatorer är Enter-PSHostProcess- cmdlet aktiverad på en angiven fjärrdator, så att du kan ansluta till en lokal process i en fjärransluten Windows PowerShell-session.
Exempel
Exempel 1: Börja felsöka en runspace i Windows PowerShell ISE-processen
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:\>
Parametrar
-AppDomainName
Typ: | String |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-HostProcessInfo
Typ: | PSHostProcessInfo |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-Id
Anger en process enligt process-ID:t. Om du vill hämta ett process-ID kör du cmdleten Get-Process.
Typ: | Int32 |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Name
Anger en process med processnamnet. Kör cmdleten Get-Process för att hämta ett processnamn. Du kan också hämta processnamn från dialogrutan Egenskaper för en process i Aktivitetshanteraren.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Process
Anger en process av processobjektet. Det enklaste sättet att använda den här parametern är att spara resultatet av ett Get-Process kommando som returnerar processen som du vill ange i en variabel och sedan ange variabeln som värdet för den här parametern.
Typ: | Process |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
Indata
Kommentarer
Enter-PSHostProcess inte kan ange processen för Windows PowerShell-sessionen där du kör kommandot. Du kan dock ange processen för en annan Windows PowerShell-session eller en Windows PowerShell ISE-session som körs samtidigt som sessionen där du kör Enter-PSHostProcess.
Enter-PSHostProcess kan endast ange de processer som är värdar för Windows PowerShell. De har alltså läst in Windows PowerShell-motorn.
Om du vill avsluta en process inifrån processen skriver du avsluta och trycker sedan på Retur.