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.
I stället för att skapa en ny process för att vara 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örningar och sedan välja en runspace 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 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 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 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 alla processer som hittades 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 del 1: Börja felsöka en runspace 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 kan du hitta en runspace som du vill felsöka genom att köra Get-Runspaceoch sedan felsöka körningen.
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
Exempel del 2: Felsöka ett specifikt runspace
Därefter felsöker du runspace ID 4, som kör en annan användares långvariga skript. Observera att körningstillståndet är Öppet i listan som returneras från Get-Runspaceoch att tillgängligheten är Upptagen, vilket innebär att körningen fortfarande kör det långvariga skriptet. De runspace-objekt som returneras av Get-Runspace har också en NoteProperty som heter ScriptStackTrace för den kommandostack som körs, om det är tillgängligt.
[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:\>
Starta en interaktiv felsökningssession med det här runspace-området genom att köra cmdleten Debug-Runspace .
Exempel del 3: Slutför felsökningssessionen och avsluta
När du är klar med felsökningen tillåter du att skriptet fortsätter att köras utan att felsökaren är ansluten genom att köra kommandot exit debugger. Du kan också avsluta felsökningsprogrammet med q- eller Stop-kommandona.
När du är klar med processen avslutar du processen genom att köra cmdleten Exit-PSHostProcess . Då återgår du till kommandotolken PS C:\> .
[Process:346]: [RSDBG: 3]: PS C:\> exit
[Process:1520]: PS C:\>
[Process:1520]: PS C:\> Exit-PSHostProcess
PS C:\>
Parametrar
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 |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hämtar eller anger det anpassade namn på pipe 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 |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
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 |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Anger en process enligt process-ID:t. Kör cmdleten för Get-Process att hämta ett process-ID.
| Type: | Int32 |
| Position: | 0 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
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 |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
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 |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Indata
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 avsluta och trycker sedan på Retur.
Före PowerShell 7.1 hade fjärrkommunikation via SSH inte stöd för fjärrsessioner i andra hoppet. Den här funktionen begränsades till sessioner med WinRM. PowerShell 7.1 tillåter Enter-PSSession och Enter-PSHostProcess fungerar inifrån alla interaktiva fjärrsessioner.
Relaterade länkar
Feedback
Skicka och visa feedback för