Enter-PSHostProcess
Menyambungkan ke dan masuk ke dalam 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.
Jenis: | String |
Position: | 1 |
Nilai default: | DefaultAppDomain |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-HostProcessInfo
Menentukan objek PSHostProcessInfo yang dapat disambungkan dengan PowerShell. Gunakan Get-PSHostProcessInfo
untuk mendapatkan objek.
Jenis: | PSHostProcessInfo |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Id
Menentukan proses menurut ID proses. Untuk mendapatkan ID proses, jalankan Get-Process
cmdlet.
Jenis: | Int32 |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | Process |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
Input
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.