Enter-PSHostProcess

Koneksi ke dan masuk ke sesi interaktif dengan proses lokal.

Sintaks

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>]

Deskripsi

Enter-PSHostProcess Cmdlet terhubung ke dan masuk ke sesi interaktif dengan proses lokal. Dimulai di PowerShell 6.2, cmdlet ini didukung pada platform non-Windows.

Alih-alih membuat proses baru untuk menghosting PowerShell dan menjalankan sesi jarak jauh, sesi interaktif jarak jauh dijalankan dalam proses yang sudah ada yang sudah menjalankan PowerShell. Saat berinteraksi dengan sesi jarak jauh pada proses tertentu, Anda dapat menghitung runspace yang sedang berjalan, lalu memilih runspace untuk men-debug dengan menjalankan salah satu Debug-Runspace atau Enable-RunspaceDebug.

Proses yang ingin Anda masukkan harus menghosting PowerShell (System.Management.Automation.dll). Anda harus menjadi anggota grup Administrator di komputer tempat proses ditemukan, atau Anda harus menjadi pengguna yang menjalankan skrip yang memulai proses.

Setelah Anda memilih runspace untuk debug, sesi debug jarak jauh dibuka untuk runspace jika sedang menjalankan perintah atau dihentikan di debugger. Anda kemudian dapat men-debug skrip runspace dengan cara yang sama seperti Anda akan men-debug skrip sesi jarak jauh lainnya.

Lepaskan dari sesi penelusuran kesalahan, lalu sesi interaktif dengan proses, dengan menjalankan keluar dua kali, atau hentikan eksekusi skrip dengan menjalankan perintah keluar debugger yang ada.

Jika Anda menentukan proses dengan menggunakan parameter Nama , dan hanya ada satu proses yang ditemukan dengan nama yang ditentukan, proses dimasukkan. Jika lebih dari satu proses dengan nama yang ditentukan ditemukan, PowerShell mengembalikan kesalahan, dan mencantumkan semua proses yang ditemukan dengan nama yang ditentukan.

Untuk mendukung melampirkan ke proses pada komputer jarak jauh, Enter-PSHostProcess cmdlet diaktifkan di komputer jarak jauh tertentu, sehingga Anda dapat melampirkan ke proses lokal dalam sesi PowerShell jarak jauh.

Contoh

Contoh Bagian 1: Mulai men-debug runspace dalam proses ISE PowerShell

Dalam contoh ini, Anda menjalankan Enter-PSHostProcess dari dalam konsol PowerShell untuk memasuki proses ISE PowerShell. Dalam sesi interaktif yang dihasilkan, Anda dapat menemukan runspace yang ingin Anda debug dengan menjalankan Get-Runspace, lalu men-debug 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

Contoh bagian 2: Men-debug runspace tertentu

Selanjutnya, debug runspace ID 4, yang menjalankan skrip pengguna lain yang berjalan lama. Dari daftar yang dikembalikan dari Get-Runspace, perhatikan bahwa Status runspace dibuka, dan Ketersediaan Sibuk, yang berarti bahwa runspace masih menjalankan skrip yang berjalan lama. Objek runspace yang dikembalikan juga Get-Runspace memiliki NoteProperty yang disebut ScriptStackTrace dari tumpukan perintah yang sedang berjalan, jika tersedia.

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

Mulai sesi penelusuran kesalahan interaktif dengan runspace ini dengan menjalankan Debug-Runspace cmdlet.

Contoh bagian 3: Selesaikan sesi penelusuran kesalahan dan keluar

Setelah Anda selesai men-debug, izinkan skrip untuk terus berjalan tanpa debugger yang dilampirkan dengan menjalankan perintah debugger keluar. Atau, Anda dapat keluar dari debugger dengan perintah q atau Stop.

Ketika Anda selesai bekerja dalam proses, keluar dari proses dengan menjalankan Exit-PSHostProcess cmdlet. Ini mengembalikan Anda ke PS C:\> permintaan.

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

Parameter

-AppDomainName

Menentukan nama domain aplikasi yang akan disambungkan jika dihilangkan, menggunakan DefaultAppDomain. Gunakan Get-PSHostProcessInfo untuk menampilkan nama domain aplikasi.

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

-CustomPipeName

Mendapatkan atau mengatur nama pipa bernama kustom untuk disambungkan. Ini biasanya digunakan bersama dengan pwsh -CustomPipeName.

Parameter ini diperkenalkan di PowerShell 6.2.

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

-HostProcessInfo

Menentukan objek PSHostProcessInfo yang dapat disambungkan dengan PowerShell. Gunakan Get-PSHostProcessInfo untuk mendapatkan objek.

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

-Id

Menentukan proses menurut ID proses. Untuk mendapatkan ID proses, jalankan Get-Process cmdlet.

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

-Name

Menentukan proses dengan nama proses. Untuk mendapatkan nama proses, jalankan Get-Process cmdlet. Anda juga bisa mendapatkan nama proses dari kotak dialog Properti dari proses di Pengelola Tugas.

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

-Process

Menentukan proses menurut objek proses. Cara paling sederhana untuk menggunakan parameter ini adalah dengan menyimpan hasil Get-Process perintah yang mengembalikan proses yang ingin Anda masukkan dalam variabel, lalu menentukan variabel sebagai nilai parameter ini.

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

Input

Process

Catatan

Enter-PSHostProcess tidak dapat memasukkan proses sesi PowerShell tempat Anda menjalankan perintah. Namun, Anda dapat memasukkan proses sesi PowerShell lain, atau sesi ISE PowerShell yang berjalan pada saat yang sama dengan sesi tempat Anda menjalankan Enter-PSHostProcess.

Enter-PSHostProcess hanya dapat memasukkan proses yang menghosting PowerShell. Artinya, mereka telah memuat mesin PowerShell.

Untuk keluar dari proses dari dalam proses, ketik exit, lalu tekan Enter.

Sebelum PowerShell 7.1, jarak jauh melalui SSH tidak mendukung sesi jarak jauh hop kedua. Kemampuan ini terbatas pada sesi menggunakan WinRM. PowerShell 7.1 memungkinkan Enter-PSSession dan Enter-PSHostProcess bekerja dari dalam sesi jarak jauh interaktif apa pun.