Sdílet prostřednictvím


Enter-PSHostProcess

Připojí se k interaktivní relaci s místním procesem a vstoupí do této interaktivní relace.

Syntaxe

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 Debug-Runspace nebo Enable-RunspaceDebug.

Proces, který chcete zadat, musí být hostitelem PowerShellu (System.Management.Automation.dll). Musíte být členem skupiny Administrators v počítači, na kterém je proces nalezen, nebo musíte být uživatelem, 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 existuje 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, je v zadaném vzdáleném počítači povolená rutina Enter-PSHostProcess, abyste se mohli připojit k místnímu procesu v rámci vzdálené relace 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 a zadáte proces ISE PowerShellu. Ve výsledné interaktivní relaci můžete najít runspace, který chcete ladit spuštěním Get-Runspacea poté ladit 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-Runspacemějte na paměti, že runspace State 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 mají také 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 vrátíte na příkazový řádek PS C:\>.

[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 pro připojení, pokud je vynechán, používá DefaultAppDomain. K zobrazení názvů domén aplikace použijte Get-PSHostProcessInfo.

Typ:String
Position:1
Default value:DefaultAppDomain
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky: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.

Typ:String
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-HostProcessInfo

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

Typ:PSHostProcessInfo
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Id

Určuje proces podle ID procesu. Id procesu získáte spuštěním rutiny Get-Process.

Typ:Int32
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Name

Určuje proces podle názvu procesu. Název procesu získáte spuštěním rutiny Get-Process. Názvy procesů můžete získat také z dialogového okna Vlastnosti procesu ve Správci úloh.

Typ:String
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Process

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

Typ:Process
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

Vstupy

Process

Poznámky

Enter-PSHostProcess nelze zadat proces relace PowerShellu, ve které příkaz spouštíte. 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.

Chcete-li ukončit proces z procesu, zadejte ukončení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 pracovat z jakékoli interaktivní vzdálené relace.