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 příkazu nebo Debug-Runspace
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 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-Runspace
a 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.
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 objekt PSHostProcessInfo , ke kterému lze připojit pomocí PowerShellu. Slouží Get-PSHostProcessInfo
k získání objektu.
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. Pokud chcete získat ID procesu, spusťte rutinu 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. 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.
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šší 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.
Typ: | Process |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
Vstupy
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.