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 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 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 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 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 du Enter-PSHostProcess
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-Runspace
och sedan felsöka körningsytan.
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 en specifik runspace
Därefter felsöker du runspace ID 4, som kör en annan användares långvariga skript. I listan som returneras från Get-Runspace
bör du observera att runspace State är Öppnad och Tillgänglighet är Upptagen, vilket innebär att körningsytan fortfarande kör det långvariga skriptet. De runspace-objekt som returneras av Get-Runspace
har också en NoteProperty- med namnet ScriptStackTrace för den körningskommandostacken, 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 den här körningsytan 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 PS C:\>
fråga.
[Process:346]: [RSDBG: 3]: PS C:\> exit
[Process:1520]: PS C:\>
[Process:1520]: PS C:\> Exit-PSHostProcess
PS C:\>
Parametrar
-AppDomainName
Anger ett programdomännamn som ska anslutas till om det utelämnas, använder DefaultAppDomain. Använd Get-PSHostProcessInfo
för att visa programdomännamnen.
Typ: | String |
Position: | 1 |
Standardvärde: | DefaultAppDomain |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-CustomPipeName
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.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-HostProcessInfo
Anger ett PSHostProcessInfo objekt som kan anslutas till med PowerShell. Använd Get-PSHostProcessInfo
för att hämta objektet.
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
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 avslutaoch trycker sedan på Retur.
Före PowerShell 7.1 hade fjärrkommunikation via SSH inte stöd för fjärrsessioner med andra hopp. Den här funktionen var begränsad till sessioner med WinRM. Med PowerShell 7.1 kan Enter-PSSession
och Enter-PSHostProcess
fungera inifrån alla interaktiva fjärrsessioner.