Cara mengendalikan ralat dalam PowerShell dengan cekap

Kemaskini terakhir: 07/02/2025
Pengarang Ishak
  • Fahami perbezaan antara ralat penamatan dan tidak penamatan.
  • Gunakan $Error dan ErrorVariable untuk mengendalikan ralat dengan betul.
  • Gunakan Try/Catch/Akhirnya sekat untuk mengendalikan pengecualian dengan kawalan berbutir.
  • Tetapkan $ErrorActionPreference kepada tingkah laku ralat yang diingini.

PowerShell vs CMD: Kelebihan dan Kekurangan-9

PowerShell Ia adalah alat yang sangat berkuasa untuk mengurus, mengautomasikan dan mentadbir tugas dalam ekosistem OS Windows dan persekitaran lain. Walau bagaimanapun, seperti dalam mana-mana bahasa pengaturcaraan, pengendalian kesilapan adalah bahagian penting dalam memastikan skrip berjalan dengan lancar dan cekap.

Dalam artikel ini, kami akan meneroka secara mendalam cara mengendalikan ralat dalam PowerShell, daripada asas kepada teknik yang lebih khusus. Kami akan membincangkan kaedah dan strategi berbeza yang boleh anda laksanakan untuk meningkatkan keteguhan skrip anda dan memastikan kegagalan dikendalikan dengan betul tanpa mengganggu proses kritikal.

Ralat Mengendalikan Asas dalam PowerShell

Untuk memahami cara mengendalikan ralat dalam PowerShell, adalah penting untuk membezakan antara dua jenis ralat utama: kesilapan penamatan (kesilapan penamatan) dan ralat tidak tamat (ralat tidak tamat).

  • Ralat bukan penamatan: Ralat jenis ini tidak mengganggu pelaksanaan skrip. Contohnya, jika PowerShell tidak dapat memproses fail individu dalam senarai, ia akan terus mencuba item seterusnya.
  • Ralat penamatan: Ralat ini menyebabkan skrip atau saluran paip berhenti serta-merta. Mereka lebih serius dan memerlukan perhatian segera.

Memahami perbezaan ini adalah penting untuk menggunakan alat yang betul untuk pengendalian ralat dalam PowerShell.

Ralat mengendalikan dengan $Error dan ErrorVariable

Pengendalian ralat dalam PowerShell adalah berdasarkan penggunaan pembolehubah automatik seperti $Error dan parameternya ErrorVariable.

$Error: Ia ialah pembolehubah global yang bertindak sebagai senarai terkumpul ralat semasa sesi semasa. Ralat baharu ditambahkan pada bahagian atas senarai dan anda boleh mengakses yang terbaharu dengan $Error[0]. Untuk mengosongkan semua ralat terkumpul, gunakan $Error.Clear().

ErrorVariable: Parameter ini membolehkan anda menangkap ralat daripada arahan tertentu ke dalam pembolehubah tersuai. Tidak seperti $Error, ErrorVariable tidak mengumpul kesilapan orang lain arahan dilaksanakan sebelum ini.

  Cara Menjalankan Skrip dalam PowerShell: Panduan Lengkap Langkah demi Langkah

Sebagai contoh:

Get-ChildItem -Path "C:\CarpetaInexistente" -ErrorVariable MiError

Dalam kes ini, ralat yang dihasilkan oleh arahan akan disimpan dalam pembolehubah $MiError.

Menggunakan $ErrorActionPreference dan ErrorAction

Dalam PowerShell, terdapat pembolehubah automatik yang dipanggil $ErrorActionPreference yang mengawal bagaimana ralat dikendalikan. Pembolehubah ini, seperti parameter Tindakan Ralat, menerima beberapa nilai:

  • Teruskan: Ini adalah lalai. Paparkan ralat dalam konsol dan teruskan menjalankan skrip.
  • Secara senyapTeruskan: Sekat mesej ralat dan teruskan pelaksanaan.
  • Berhenti: Menghentikan skrip apabila ralat ditemui.
  • Tanya: Tanya pengguna bagaimana untuk meneruskan sekiranya berlaku ralat.
  • Abai: Abaikan ralat sepenuhnya dan jangan logkannya (tersedia sejak PowerShell 3.0).

Sebagai contoh, jika anda mahu ralat dianggap sebagai ralat penamatan, anda boleh menggunakan:

$ErrorActionPreference = "Berhenti"

Cuba/Tangkap/Akhirnya Sekat

Blok-blok Cuba/Tangkap/Akhirnya ialah alat utama untuk mengendalikan ralat penamatan dalam PowerShell. Kaedah ini membolehkan anda menangkap dan mengendalikan pengecualian dengan cara terkawal.

Struktur asasnya ialah:

Cuba { # Kod yang mungkin menimbulkan ralat } Tangkap [SpecificException] { # Mengendalikan pengecualian khusus } Tangkap { # Mengendalikan sebarang pengecualian lain } Akhirnya { # Kod yang sentiasa dilaksanakan, sama ada terdapat ralat atau tidak }

Blok itu Akhirnya Ia berguna untuk membebaskan sumber atau melakukan sebarang tindakan yang perlu dilaksanakan tanpa mengira sama ada ralat berlaku.

pengendalian ralat dengan cuba tangkap

Sifat berguna ErrorRecord

Apabila ralat berlaku, PowerShell menjana objek RalatRekod. Ini mengandungi maklumat terperinci tentang ralat dan boleh diakses melalui pembolehubah $Error o $_ di dalam sebuah blok gusti.

Beberapa sifat utama bagi RalatRekod termasuk:

  • Objek Sasaran: Objek yang menyebabkan ralat.
  • Maklumat Kategori: Kategori dan penerangan ringkas tentang ralat.
  • pengecualian: Butiran pengecualian yang dihasilkan.
  • InvocationInfo: Maklumat khusus tentang arahan atau skrip di mana ralat berlaku.

Sifat ini amat berguna dalam mengenal pasti punca ralat dan mengambil tindakan pembetulan.

Petua untuk meningkatkan pengurusan ralat

Kami berkongsi beberapa cadangan praktikal:

  • Elakkan mengabaikan ralat dengan Secara senyapTeruskan atau blok kosong masuk gusti.
  • Jika anda menggunakan program luaran, gunakan $LASTEXITCODE untuk menyemak kod keluar dan pastikan ia mengikut konvensyen standard.
  • Lakukan ujian untuk mengenal pasti kemungkinan ralat dan tingkah lakunya sebelum menggunakan skrip ke persekitaran pengeluaran.
  • Gunakan blok Cuba/Tangkap untuk mengendalikan ralat yang serius dan memastikan skrip anda teguh dan boleh diramal.
  Sejarah dan fungsi win.ini dan system.ini dalam Windows

Memahami dan mengurus ralat dengan berkesan dalam PowerShell adalah penting untuk mana-mana pentadbir atau pembangun. Dengan alat dan strategi yang dijelaskan, anda akan dapat menangani masalah dengan lebih proaktif, mengoptimumkan proses anda dan meminimumkan gangguan. Memandangkan anda sudah mahir dalam pengendalian ralat dalam PowerShell, tiba masanya untuk mempraktikkannya!