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>]

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

Process

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.