Set-PSBreakpoint

Mengatur titik henti pada baris, perintah, atau variabel.

Sintaks

Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Column] <Int32>]
   [-Line] <Int32[]>
   [-Script] <String[]>
   [-Runspace <Runspace>]
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   -Command <String[]>
   [[-Script] <String[]>]
   [-Runspace <Runspace>]
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Script] <String[]>]
   -Variable <String[]>
   [-Mode <VariableAccessMode>]
   [-Runspace <Runspace>]
   [<CommonParameters>]

Deskripsi

Set-PSBreakpoint Cmdlet mengatur titik henti dalam skrip atau dalam perintah apa pun yang dijalankan dalam sesi saat ini. Anda dapat menggunakan Set-PSBreakpoint untuk mengatur titik henti sebelum menjalankan skrip atau menjalankan perintah, atau selama penelusuran kesalahan, saat berhenti di titik henti lain.

Set-PSBreakpoint tidak dapat menyetel titik henti pada komputer jarak jauh. Untuk men-debug skrip di komputer jarak jauh, salin skrip ke komputer lokal lalu debug secara lokal.

Setiap Set-PSBreakpoint perintah membuat salah satu dari tiga jenis titik henti berikut:

  • Titik henti baris - Mengatur titik henti pada koordinat baris dan kolom tertentu.
  • Titik henti perintah - Mengatur titik henti pada perintah dan fungsi.
  • Titik henti variabel - Mengatur titik henti pada variabel.

Anda dapat mengatur titik henti pada beberapa baris, perintah, atau variabel dalam satu Set-PSBreakpoint perintah, tetapi setiap Set-PSBreakpoint perintah hanya mengatur satu jenis titik henti.

Pada titik henti, PowerShell untuk sementara berhenti mengeksekusi dan memberikan kontrol ke debugger. Perintah berubah menjadi DBG\>, dan sekumpulan perintah debugger tersedia untuk digunakan. Namun, Anda dapat menggunakan parameter Tindakan untuk menentukan respons alternatif, seperti kondisi untuk titik henti atau instruksi untuk melakukan tugas tambahan seperti pengelogan atau diagnostik.

Set-PSBreakpoint Cmdlet adalah salah satu dari beberapa cmdlet yang dirancang untuk men-debug skrip PowerShell. Untuk informasi selengkapnya tentang debugger PowerShell, lihat about_Debuggers.

Contoh

Contoh 1: Mengatur titik henti pada baris

Contoh ini mengatur titik henti pada baris 5 dalam skrip Sample.ps1. Ketika skrip berjalan, eksekusi berhenti segera sebelum baris 5 akan dijalankan.

Set-PSBreakpoint -Script "sample.ps1" -Line 5

Column     : 0
Line       : 5
Action     :
Enabled    : True
HitCount   : 0
Id         : 0
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Saat Anda mengatur titik henti baru menurut nomor baris, Set-PSBreakpoint cmdlet menghasilkan objek titik henti baris (System.Management.Automation.LineBreakpoint) yang menyertakan ID titik henti dan hit count.

Contoh 2: Mengatur titik henti pada fungsi

Contoh ini membuat titik henti perintah pada Increment fungsi di cmdlet Sample.ps1. Skrip berhenti dijalankan segera sebelum setiap panggilan ke fungsi yang ditentukan.

Set-PSBreakpoint -Command "Increment" -Script "sample.ps1"

Command    : Increment
Action     :
Enabled    : True
HitCount   : 0
Id         : 1
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Hasilnya adalah objek titik henti perintah. Sebelum skrip berjalan, nilai properti HitCount adalah 0.

Contoh 3: Mengatur titik henti pada variabel

Contoh ini mengatur titik henti pada variabel Server dalam skrip Sample.ps1. Ini menggunakan parameter Mode dengan nilai ReadWrite untuk menghentikan eksekusi ketika nilai variabel dibaca dan tepat sebelum nilai berubah.

Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite

Contoh 4: Atur titik henti pada setiap perintah yang dimulai dengan teks tertentu

Contoh ini mengatur titik henti pada setiap perintah dalam skrip Sample.ps1 yang dimulai dengan "tulis", seperti Write-Host.

Set-PSBreakpoint -Script Sample.ps1 -Command "write*"

Contoh 5: Mengatur titik henti tergantung pada nilai variabel

Contoh ini menghentikan eksekusi pada DiskTest fungsi dalam Test.ps1 skrip hanya ketika nilai $Disk variabel lebih besar dari 2.

Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }

Nilai Tindakan adalah blok skrip yang menguji nilai $Disk variabel dalam fungsi.

Tindakan menggunakan break kata kunci untuk menghentikan eksekusi jika kondisi terpenuhi. Alternatif (dan defaultnya) adalah Lanjutkan.

Contoh 6: Mengatur titik henti pada fungsi

Contoh ini mengatur titik henti pada CheckLog fungsi. Karena perintah tidak menentukan skrip, titik henti diatur pada apa pun yang berjalan dalam sesi saat ini. Debugger berhenti ketika fungsi dipanggil, bukan ketika dideklarasikan.

PS> Set-PSBreakpoint -Command "checklog"
Id       : 0
Command  : checklog
Enabled  : True
HitCount : 0
Action   :

function CheckLog {
>> get-eventlog -log Application |
>> where {($_.source -like "TestApp") -and ($_.Message -like "*failed*")}
>>}
>>
PS> Checklog
DEBUG: Hit breakpoint(s)
DEBUG:  Function breakpoint on 'prompt:Checklog'

Contoh 7: Mengatur titik henti pada beberapa baris

Contoh ini menetapkan tiga titik henti baris dalam skrip Sample.ps1. Ini mengatur satu titik henti pada kolom 2 pada setiap baris yang ditentukan dalam skrip. Tindakan yang ditentukan dalam parameter Tindakan berlaku untuk semua titik henti.

PS C:\> Set-PSBreakpoint -Script "sample.ps1" -Line 1, 14, 19 -Column 2 -Action {&(log.ps1)}

Column     : 2
Line       : 1
Action     :
Enabled    : True
HitCount   : 0
Id         : 6
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1


Column     : 2
Line       : 14
Action     :
Enabled    : True
HitCount   : 0
Id         : 7
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1


Column     : 2
Line       : 19
Action     :
Enabled    : True
HitCount   : 0
Id         : 8
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

Contoh 8: Mengatur titik henti di runspace

Dalam contoh ini, pekerjaan dimulai. Runspace disimpan dalam variabel dan diteruskan ke Set-PSBreakPoint perintah dengan parameter Runspace .

Start-Job -ScriptBlock {
    Start-Sleep -Seconds 10
}

$runspace = Get-Runspace -Id 1

Set-PSBreakpoint -Command Start-Sleep -Runspace $runspace

Parameter

-Action

Menentukan perintah yang berjalan di setiap titik henti alih-alih melanggar. Masukkan blok skrip yang berisi perintah. Anda dapat menggunakan parameter ini untuk mengatur titik henti kondisional atau untuk melakukan tugas lain, seperti pengujian atau pengelogan.

Jika parameter ini dihilangkan, atau tidak ada tindakan yang ditentukan, eksekusi berhenti di titik henti, dan debugger dimulai.

Saat parameter Tindakan digunakan, blok Skrip tindakan berjalan di setiap titik henti. Eksekusi tidak berhenti kecuali blok skrip menyertakan kata kunci Hentian. Jika Anda menggunakan kata kunci Lanjutkan di blok skrip, eksekusi akan dilanjutkan hingga titik henti berikutnya.

Untuk informasi selengkapnya, lihat about_Script_Blocks, about_Break, dan about_Continue.

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

-Column

Menentukan nomor kolom kolom dalam file skrip tempat eksekusi berhenti. Masukkan hanya satu nomor kolom. Defaultnya adalah kolom 1.

Nilai Kolom digunakan dengan nilai parameter Baris untuk menentukan titik henti. Jika parameter Baris menentukan beberapa baris, parameter Kolom mengatur titik henti pada kolom yang ditentukan pada setiap baris yang ditentukan. PowerShell berhenti mengeksekusi sebelum pernyataan atau ekspresi yang menyertakan karakter pada posisi baris dan kolom yang ditentukan.

Kolom dihitung dari margin kiri atas yang dimulai dengan nomor kolom 1 (bukan 0). Jika Anda menentukan kolom yang tidak ada dalam skrip, kesalahan tidak dideklarasikan, tetapi titik henti tidak pernah dijalankan.

Type:Int32
Position:2
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

Mengatur titik henti perintah. Masukkan nama cmdlet, seperti Get-Process, atau nama fungsi. Kartubebas diizinkan.

Eksekusi berhenti tepat sebelum setiap instans setiap perintah dijalankan. Jika perintah adalah fungsi, eksekusi berhenti setiap kali fungsi dipanggil dan di setiap bagian BEGIN, PROCESS, dan END.

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

-Line

Mengatur titik henti baris dalam skrip. Masukkan satu atau beberapa nomor baris, dipisahkan dengan koma. PowerShell berhenti segera sebelum menjalankan pernyataan yang dimulai pada setiap baris yang ditentukan.

Baris dihitung dari margin kiri atas file skrip yang dimulai dengan baris nomor 1 (bukan 0). Jika Anda menentukan baris kosong, eksekusi akan berhenti sebelum baris tidak kosong berikutnya. Jika garis berada di luar jangkauan, titik henti tidak pernah tertembak.

Type:Int32[]
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Mode

Menentukan mode akses yang memicu titik henti variabel. Defaultnya adalah Tulis.

Parameter ini hanya valid ketika parameter Variabel digunakan dalam perintah . Mode ini berlaku untuk semua titik henti yang diatur dalam perintah. Nilai yang dapat diterima untuk parameter ini adalah:

  • Tulis - Menghentikan eksekusi segera sebelum nilai baru ditulis ke variabel .
  • Baca - Menghentikan eksekusi saat variabel dibaca, yaitu, ketika nilainya diakses, baik untuk ditetapkan, ditampilkan, atau digunakan. Dalam mode baca, eksekusi tidak berhenti ketika nilai variabel berubah.
  • ReadWrite - Menghentikan eksekusi saat variabel dibaca atau ditulis.
Type:VariableAccessMode
Accepted values:Read, Write, ReadWrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Runspace

Menentukan Id objek Runspace sehingga Anda dapat berinteraksi dengan titik henti di runspace yang ditentukan.

Parameter ini ditambahkan di PowerShell 7.2.

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

-Script

Menentukan array file skrip tempat cmdlet ini menetapkan titik henti. Masukkan jalur dan nama file dari satu atau beberapa file skrip. Jika file berada di direktori saat ini, Anda dapat menghilangkan jalur. Kartubebas diizinkan.

Secara default, titik henti variabel dan titik henti perintah diatur pada perintah apa pun yang berjalan dalam sesi saat ini. Parameter ini hanya diperlukan saat mengatur titik henti baris.

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

-Variable

Menentukan array variabel tempat cmdlet ini mengatur titik henti. Masukkan daftar variabel yang dipisahkan koma tanpa tanda dolar ($).

Gunakan parameter Mode untuk menentukan mode akses yang memicu titik henti. Mode default, Tulis, menghentikan eksekusi tepat sebelum nilai baru ditulis ke variabel .

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

Input

None

Anda tidak dapat menyalurkan objek ke cmdlet ini.

Output

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint mengembalikan objek yang mewakili setiap titik henti yang ditetapkannya.

Catatan

PowerShell menyertakan alias berikut untuk Set-PSBreakpoint:

  • Semua platform:

    • sbp
  • Set-PSBreakpoint tidak dapat menyetel titik henti pada komputer jarak jauh. Untuk men-debug skrip di komputer jarak jauh, salin skrip ke komputer lokal lalu debug secara lokal.

  • Saat Anda mengatur titik henti pada lebih dari satu baris, perintah, atau variabel, Set-PSBreakpoint menghasilkan objek titik henti untuk setiap entri.

  • Saat mengatur titik henti pada fungsi atau variabel pada prompt perintah, Anda dapat mengatur titik henti sebelum atau sesudah Anda membuat fungsi atau variabel.