Dela via


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>]
Enter-PSHostProcess
     -CustomPipeName <String>
     [<CommonParameters>]

Description

Cmdleten Enter-PSHostProcess ansluter till och går in i en interaktiv session med en lokal process. Från och med PowerShell 6.2 stöds den här cmdleten på andra plattformar än Windows-plattformar.

I stället för att skapa en ny process som värd för PowerShell och köra en fjärrsession körs den interaktiva fjärrsessionen i en befintlig process som redan kör PowerShell. När du interagerar med en fjärrsession i en angiven process kan du räkna upp körningskörningsutrymmen och sedan välja ett körningsutrymme som ska felsökas genom att köra antingen Debug-Runspace eller Enable-RunspaceDebug.

Processen som du vill ange måste vara värd för 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 att felsöka öppnas en fjärrfelsökningssession för runspace 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 hjälp av parametern Namn och det bara finns en process med det angivna namnet anges processen. Om mer än en process med det angivna namnet hittas returnerar PowerShell ett fel och visar en lista över alla processer som hittas med det angivna namnet.

För att stödja anslutning till processer på fjärrdatorer är cmdleten Enter-PSHostProcess aktiverad på en angiven fjärrdator, så att du kan ansluta till en lokal process i en PowerShell-fjärrsession.

Exempel

Exempel 1: Börja felsöka ett körningsutrymme i PowerShell ISE-processen

I det här exemplet kör Enter-PSHostProcess du inifrån PowerShell-konsolen för att ange PowerShell ISE-processen. I den resulterande interaktiva sessionen hittar du ett körningsutrymme som du vill felsöka genom att köra Get-Runspaceoch sedan felsöka körningsutrymmet.

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

Anger ett programdomännamn att ansluta till om det utelämnas, använder DefaultAppDomain. Använd Get-PSHostProcessInfo för att visa programdomännamnen.

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

-CustomPipeName

Hämtar eller anger det anpassade namngivna pipe-namnet som ska anslutas till. Detta används vanligtvis tillsammans med pwsh -CustomPipeName.

Den här parametern introducerades i PowerShell 6.2.

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

-HostProcessInfo

Anger ett PSHostProcessInfo-objekt som kan anslutas till med PowerShell. Använd Get-PSHostProcessInfo för att hämta objektet.

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

-Id

Anger en process enligt process-ID:t. Om du vill hämta ett process-ID kör du cmdleten Get-Process .

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

-Name

Anger en process med processnamnet. Kör cmdleten för Get-Process att hämta ett processnamn. Du kan också hämta processnamn från dialogrutan Egenskaper för en process i Aktivitetshanteraren.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 en process som du vill ange i en variabel och sedan ange variabeln som värdet för den här parametern.

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

Indata

Process

Kommentarer

Enter-PSHostProcess kan inte ange processen för Den PowerShell-session där du kör kommandot. Du kan dock ange processen för en annan PowerShell-session eller en PowerShell ISE-session som körs samtidigt som den session där du kör Enter-PSHostProcess.

Enter-PSHostProcess kan bara ange de processer som är värdar för PowerShell. De har alltså läst in PowerShell-motorn.

Om du vill avsluta en process inifrån processen skriver du exit och trycker sedan på Retur.