Enter-PSHostProcess

Připojení se připojí k interaktivní relaci s místním procesem.

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

Rutina Enter-PSHostProcess se připojí k interaktivní relaci s místním procesem a zadá ji do interaktivní relace. Počínaje PowerShellem 6.2 se tato rutina podporuje na platformách jiných než Windows.

Místo vytvoření nového procesu pro hostování PowerShellu a spuštění vzdálené relace se vzdálená interaktivní relace spustí v existujícím procesu, který už používá PowerShell. Při interakci se vzdálenou relací v zadaném procesu můžete vytvořit výčet spuštěných prostředí runspace a pak vybrat runspace, který chcete ladit spuštěním příkazu nebo Debug-RunspaceEnable-RunspaceDebug.

Proces, který chcete zadat, musí být hostitelem PowerShellu (System.Management.Automation.dll). Musíte být členem skupiny Správa istrators v počítači, na kterém je proces nalezen, nebo musíte být uživatel, který spouští skript, který proces spustil.

Jakmile vyberete runspace pro ladění, otevře se vzdálená ladicí relace pro runspace, pokud právě spouští příkaz nebo je zastavena v ladicím programu. Skript runspace pak můžete ladit stejným způsobem jako jiné vzdálené skripty relace.

Odpojte od ladicí relace a potom interaktivní relaci s procesem, spuštěním ukončení dvakrát nebo zastavením spouštění skriptu spuštěním existujícího ladicího programu ukončete příkaz.

Pokud zadáte proces pomocí parametru Name a je nalezen pouze jeden proces se zadaným názvem, proces se zadá. Pokud se najde více procesů se zadaným názvem, PowerShell vrátí chybu a zobrazí seznam všech nalezených procesů se zadaným názvem.

Pokud chcete podporovat připojení k procesům na vzdálených počítačích, Enter-PSHostProcess je rutina povolená v zadaném vzdáleném počítači, takže se můžete připojit k místnímu procesu ve vzdálené relaci PowerShellu.

Příklady

Příklad části 1: Spuštění ladění prostředí Runspace v rámci procesu prostředí PowerShell ISE

V tomto příkladu spustíte Enter-PSHostProcess z konzoly PowerShellu proces ISE PowerShellu. Ve výsledné interaktivní relaci najdete runspace, který chcete ladit spuštěním Get-Runspacea laděním runspace.

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

Příklad části 2: Ladění konkrétního prostředí runspace

Dále ladění runspace ID 4, který spouští dlouhotrvající skript jiného uživatele. Ze seznamu vráceného z Get-Runspace, všimněte si, že runspace Stav je otevřen a dostupnost je zaneprázdněn, což znamená, že runspace stále běží dlouho běžící skript. Objekty runspace vrácené Get-Runspace také mají NoteProperty s názvem ScriptStackTrace spuštěného zásobníku příkazů, pokud je k dispozici.

[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:\>

Spuštěním rutiny Debug-Runspace spusťte interaktivní ladicí relaci s tímto prostředím Runspace.

Příklad části 3: Dokončení ladicí relace a ukončení

Po dokončení ladění povolte spuštění skriptu bez připojeného ladicího programu spuštěním příkazu ukončovacího ladicího programu. Případně můžete ladicí program ukončit pomocí příkazů q nebo Stop.

Po dokončení práce v procesu ukončete proces spuštěním rutiny Exit-PSHostProcess . Tím se zobrazí PS C:\> výzva.

[Process:346]: [RSDBG: 3]: PS C:\> exit
[Process:1520]: PS C:\>
[Process:1520]: PS C:\>  Exit-PSHostProcess
PS C:\>

Parametry

-AppDomainName

Určuje název domény aplikace, ke které se má připojit, pokud je vynechán, používá defaultAppDomain. Slouží Get-PSHostProcessInfo k zobrazení názvů domén aplikace.

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

-CustomPipeName

Získá nebo nastaví vlastní pojmenovaný název kanálu pro připojení. To se obvykle používá ve spojení s pwsh -CustomPipeName.

Tento parametr byl představen v PowerShellu 6.2.

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

-HostProcessInfo

Určuje objekt PSHostProcessInfo , ke kterému lze připojit pomocí PowerShellu. Slouží Get-PSHostProcessInfo k získání objektu.

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

-Id

Určuje proces podle ID procesu. Pokud chcete získat ID procesu, spusťte rutinu Get-Process .

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

-Name

Určuje proces podle názvu procesu. Pokud chcete získat název procesu, spusťte rutinu Get-Process . Názvy procesů můžete získat také z dialogového okna Vlastnosti procesu ve Správci úloh.

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

-Process

Určuje proces objektem procesu. Nejjednodušší způsob, jak tento parametr použít, je uložit výsledky Get-Process příkazu, který vrací proces, který chcete zadat do proměnné, a pak proměnnou zadat jako hodnotu tohoto parametru.

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

Vstupy

Process

Poznámky

Enter-PSHostProcess Aplikace nemůže zadat proces relace PowerShellu, ve které spouštíte příkaz. Můžete však zadat proces jiné relace PowerShellu nebo relaci prostředí PowerShell ISE, která běží ve stejnou dobu jako relace, ve které spouštíte Enter-PSHostProcess.

Enter-PSHostProcess může zadat pouze ty procesy, které hostují PowerShell. To znamená, že načetli modul PowerShellu.

Pokud chcete proces ukončit z procesu, zadejte exit a stiskněte Enter.

Před PowerShellem 7.1 vzdálené komunikace přes SSH nepodporuje vzdálené relace druhého směrování. Tato funkce byla omezená na relace používající WinRM. PowerShell 7.1 umožňuje Enter-PSSession a Enter-PSHostProcess pracuje z jakékoli interaktivní vzdálené relace.