Debug-Runspace
Memulai sesi penelusuran kesalahan interaktif dengan runspace.
Sintaks
Debug-Runspace
[-Runspace] <Runspace>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Name] <String>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Id] <Int32>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-InstanceId] <Guid>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
Debug-Runspace
Cmdlet memulai sesi penelusuran kesalahan interaktif dengan runspace aktif lokal atau jarak jauh. Anda dapat menemukan runspace yang ingin Anda debug dengan pertama kali berjalan Get-Process
untuk menemukan proses yang terkait dengan PowerShell, lalu Enter-PSHostProcess
dengan ID proses yang ditentukan dalam parameter Id untuk dilampirkan ke proses, lalu Get-Runspace
untuk mencantumkan runspace dalam proses host PowerShell.
Setelah Anda memilih runspace untuk debug, jika runspace saat ini menjalankan perintah atau skrip, atau jika skrip berhenti di titik henti, PowerShell membuka sesi debugger jarak jauh untuk runspace. Anda dapat men-debug skrip runspace dengan cara yang sama seperti skrip sesi jarak jauh yang di-debug.
Anda hanya dapat melampirkan ke proses host PowerShell jika Anda adalah administrator di komputer yang menjalankan proses, atau Anda menjalankan skrip yang ingin Anda debug. Selain itu, Anda tidak dapat memasukkan proses host yang menjalankan sesi PowerShell saat ini. Anda hanya dapat memasukkan proses host yang menjalankan sesi PowerShell yang berbeda.
Contoh
Contoh 1: Men-debug runspace jarak jauh
Dalam contoh ini, Anda men-debug runspace yang terbuka di komputer jarak jauh, WS10TestServer. Di baris pertama perintah, Anda menjalankan Get-Process
di komputer jarak jauh, dan memfilter proses host Windows PowerShell. Dalam contoh ini, Anda ingin men-debug ID proses 1152, proses host ISE Windows PowerShell.
PS C:\> Get-Process -ComputerName "WS10TestServer" -Name "*powershell*"
Handles WS(K) VM(M) CPU(s) Id ProcessName
------- ----- ----- ------ -- -----------
377 69912 63 2.09 2420 powershell
399 123396 829 4.48 1152 powershell_ise
PS C:\> Enter-PSSession -ComputerName "WS10TestServer"
[WS10TestServer]:PS C:\> Enter-PSHostProcess -Id 1152
[WS10TestServer:][Process:1152]: PS C:\Users\Test\Documents> Get-Runspace
Id Name ComputerName Type State Availability
-- ---- ------------ ---- ----- ------------
1 Runspace1 WS10TestServer Remote Opened Available
2 RemoteHost WS10TestServer Remote Opened Busy
[WS10TestServer][Process:1152]: PS C:\Users\Test\Documents> Debug-Runspace -Id 2
Hit Line breakpoint on 'C:\TestWFVar1.ps1:83'
At C:\TestWFVar1.ps1:83 char:1
+ $scriptVar = "Script Variable"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Process:1152]: [RSDBG: 2]: PS C:\> >
Pada perintah kedua, Anda menjalankan Enter-PSSession
untuk membuka sesi jarak jauh di WS10TestServer. Di perintah ketiga, Anda melampirkan ke proses host ISE Windows PowerShell yang berjalan di server jarak jauh dengan menjalankan Enter-PSHostProcess
, dan menentukan ID proses host yang Anda peroleh di perintah pertama, 1152.
Dalam perintah keempat, Anda mencantumkan runspace yang tersedia untuk ID proses 1152 dengan menjalankan Get-Runspace
.
Anda mencatat nomor ID runspace Sibuk; menjalankan skrip yang ingin Anda debug.
Dalam perintah terakhir, Anda mulai men-debug runspace yang dibuka yang menjalankan skrip, TestWFVar1.ps1
, dengan menjalankan Debug-Runspace
, dan mengidentifikasi runspace dengan ID-nya, 2, dengan menambahkan parameter Id . Karena ada titik henti dalam skrip, debugger terbuka.
Parameter
-BreakAll
Memungkinkan Anda untuk segera istirahat di lokasi saat ini ketika debugger melampirkan.
Parameter ini ditambahkan di PowerShell 7.2.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Confirm
Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.
Jenis: | SwitchParameter |
Alias: | cf |
Position: | Named |
Nilai default: | True |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Id
Menentukan nomor ID runspace. Anda dapat menjalankan Get-Runspace
untuk menampilkan ID runspace.
Jenis: | Int32 |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-InstanceId
Menentukan runspace menurut ID instansnya, GUID yang dapat Anda tampilkan dengan menjalankan Get-Runspace
.
Jenis: | Guid |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Name
Menentukan runspace menurut namanya. Anda dapat menjalankan Get-Runspace
untuk menampilkan nama runspace.
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Runspace
Menentukan objek runspace. Cara paling sederhana untuk memberikan nilai untuk parameter ini adalah dengan menentukan variabel yang berisi hasil perintah yang difilter Get-Runspace
.
Jenis: | Runspace |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-WhatIf
Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.
Jenis: | SwitchParameter |
Alias: | wi |
Position: | Named |
Nilai default: | True |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan hasil Get-Runspace
perintah ke cmdlet ini.
Catatan
Debug-Runspace
bekerja pada runspace yang berada dalam status Dibuka. Jika status runspace berubah dari Dibuka ke status lain, runspace tersebut secara otomatis dihapus dari daftar yang sedang berjalan. Runspace ditambahkan ke daftar yang sedang berjalan hanya jika memenuhi kriteria berikut.
- Jika itu berasal dari Invoke-Command; artinya, ia memiliki
Invoke-Command
ID GUID. - Jika berasal dari
Debug-Runspace
; yaitu, ia memilikiDebug-Runspace
ID GUID. - Jika berasal dari alur kerja PowerShell, dan ID pekerjaan alur kerjanya sama dengan ID pekerjaan alur kerja debugger aktif saat ini.