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.

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

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Menentukan nomor ID runspace. Anda dapat menjalankan Get-Runspace untuk menampilkan ID runspace.

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

-InstanceId

Menentukan runspace menurut ID instansnya, GUID yang dapat Anda tampilkan dengan menjalankan Get-Runspace.

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

-Name

Menentukan runspace menurut namanya. Anda dapat menjalankan Get-Runspace untuk menampilkan nama runspace.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 .

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

-WhatIf

Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

Runspace

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 memiliki Debug-Runspace ID GUID.
  • Jika berasal dari alur kerja PowerShell, dan ID pekerjaan alur kerjanya sama dengan ID pekerjaan alur kerja debugger aktif saat ini.