Bagikan melalui


Meminta Konfirmasi dari Cmdlet

Cmdlet harus meminta konfirmasi ketika mereka akan membuat perubahan pada sistem yang berada di luar lingkungan Windows PowerShell. Misalnya, jika cmdlet akan menambahkan akun pengguna atau menghentikan proses, cmdlet harus memerlukan konfirmasi dari pengguna sebelum dilanjutkan. Sebaliknya, jika cmdlet akan mengubah variabel Windows PowerShell, cmdlet tidak perlu memerlukan konfirmasi.

Untuk membuat permintaan konfirmasi, cmdlet harus menunjukkan bahwa ia mendukung permintaan konfirmasi, dan harus memanggil metode System.Management.Automation.Cmdlet.ShouldProcess dan System.Management.Automation.Cmdlet.ShouldContinue (opsional) untuk menampilkan pesan permintaan konfirmasi.

Mendukung Permintaan Konfirmasi

Untuk mendukung permintaan konfirmasi, cmdlet harus mengatur parameter SupportsShouldProcess atribut Cmdlet ke true. Ini memungkinkan parameter cmdlet Confirm dan WhatIf yang disediakan oleh Windows PowerShell. Parameter Confirm memungkinkan pengguna mengontrol apakah permintaan konfirmasi ditampilkan. Parameter WhatIf memungkinkan pengguna untuk menentukan apakah cmdlet harus menampilkan pesan atau melakukan tindakannya. Jangan menambahkan parameter Confirm dan WhatIf secara manual ke cmdlet.

Contoh berikut menunjukkan deklarasi atribut Cmdlet yang mendukung permintaan konfirmasi.

[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
        SupportsShouldProcess = true)]

Memanggil metode permintaan Konfirmasi

Dalam kode cmdlet, panggil metode System.Management.Automation.Cmdlet.ShouldProcess sebelum operasi yang mengubah sistem dilakukan. Desain cmdlet sehingga jika panggilan mengembalikan nilai false, operasi tidak dilakukan, dan cmdlet memproses operasi berikutnya.

Memanggil Metode ShouldContinue

Sebagian besar cmdlet meminta konfirmasi hanya menggunakan metode System.Management.Automation.Cmdlet.ShouldProcess. Namun, beberapa kasus mungkin memerlukan konfirmasi tambahan. Untuk kasus ini, lengkapi System.Management.Automation.Cmdlet.ShouldProcess panggilan dengan panggilan ke metode System.Management.Automation.Cmdlet.ShouldContinue. Ini memungkinkan cmdlet atau penyedia untuk lebih mengontrol cakupan Ya untuk semua respons terhadap permintaan konfirmasi.

Jika cmdlet memanggil metode System.Management.Automation.Cmdlet.ShouldContinue, cmdlet juga harus menyediakan parameter sakelar Force. Jika pengguna menentukan Force saat pengguna memanggil cmdlet, cmdlet masih harus memanggil System.Management.Automation.Cmdlet.ShouldProcess, tetapi harus melewati panggilan ke System.Management.Automation.Cmdlet.ShouldContinue.

System.Management.Automation.Cmdlet.ShouldContinue akan memberikan pengecualian ketika dipanggil dari lingkungan non-interaktif di mana pengguna tidak dapat diminta. Menambahkan parameter Force memastikan bahwa perintah masih dapat dilakukan saat dipanggil di lingkungan non-interaktif.

Contoh berikut menunjukkan cara memanggil System.Management.Automation.Cmdlet.ShouldProcess dan System.Management.Automation.Cmdlet.ShouldContinue.

if (ShouldProcess (...) )
{
  if (Force || ShouldContinue(...))
  {
     // Add code that performs the operation.
  }
}

Perilaku panggilan System.Management.Automation.Cmdlet.ShouldProcess dapat bervariasi tergantung pada lingkungan tempat cmdlet dipanggil. Menggunakan panduan sebelumnya akan membantu memastikan bahwa cmdlet berperilaku konsisten dengan cmdlet lain, terlepas dari lingkungan host.

Untuk contoh memanggil metode System.Management.Automation.Cmdlet.ShouldProcess, lihat Cara Meminta Konfirmasi.

Tentukan Tingkat Dampak

Saat Anda membuat cmdlet, tentukan tingkat dampak (tingkat keparahan) perubahan. Untuk melakukan ini, atur nilai parameter ConfirmImpact atribut Cmdlet ke Tinggi, Sedang, atau Rendah. Anda dapat menentukan nilai untuk ConfirmImpact hanya ketika Anda juga menentukan parameter SupportsShouldProcess untuk cmdlet.

Untuk sebagian besar cmdlet, Anda tidak perlu secara eksplisit menentukan ConfirmImpact. Sebagai gantinya, gunakan pengaturan default parameter, yaitu Sedang. Jika Anda mengatur ConfirmImpact ke Tinggi, operasi akan dikonfirmasi secara default. Cadangkan pengaturan ini untuk tindakan yang sangat mengganggu, seperti memformat ulang volume hard-disk.

Memanggil Metode Non-Konfirmasi

Jika cmdlet atau penyedia harus mengirim pesan tetapi tidak meminta konfirmasi, cmdlet atau penyedia dapat memanggil tiga metode berikut. Hindari menggunakan metode System.Management.Automation.Cmdlet.WriteObject untuk mengirim pesan jenis ini karena output System.Management.Automation.Cmdlet.WriteObject tergabung dengan output normal cmdlet atau penyedia Anda, yang membuat penulisan skrip menjadi sulit.

  • Untuk memperingatkan pengguna dan melanjutkan operasi, cmdlet atau penyedia dapat memanggil metode System.Management.Automation.Cmdlet.WriteWarning.

  • Untuk memberikan informasi tambahan yang dapat diambil pengguna menggunakan parameter Verbose, cmdlet atau penyedia dapat memanggil metode System.Management.Automation.Cmdlet.WriteVerbose.

  • Untuk memberikan detail tingkat penelusuran kesalahan untuk pengembang lain atau untuk dukungan produk, cmdlet atau penyedia dapat memanggil metode System.Management.Automation.Cmdlet.WriteDebug. Pengguna dapat mengambil informasi ini menggunakan parameter Debug.

Cmdlet dan penyedia terlebih dahulu memanggil metode berikut untuk meminta konfirmasi sebelum mencoba melakukan operasi yang mengubah sistem di luar Windows PowerShell:

Mereka melakukannya dengan memanggil metode System.Management.Automation.Cmdlet.ShouldProcess, yang meminta pengguna untuk mengonfirmasi operasi berdasarkan cara pengguna memanggil perintah.

Lihat Juga

Menulis Cmdlet Windows PowerShell