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-Runspace
a 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-Runspace
mě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
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.