Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Cmdlet adalah perintah ringan yang digunakan di lingkungan PowerShell. Runtime PowerShell memanggil cmdlet ini dalam konteks skrip otomatisasi yang disediakan di baris perintah. Runtime PowerShell juga memanggilnya secara terprogram melalui API PowerShell.
Cmdlet
Cmdlet melakukan tindakan dan biasanya mengembalikan objek Microsoft .NET ke perintah berikutnya dalam alur. Cmdlet adalah satu perintah yang berpartisipasi dalam semantik alur PowerShell. Ini termasuk cmdlet biner (C#), fungsi skrip tingkat lanjut, CDXML, dan Alur Kerja.
Dokumentasi SDK ini menjelaskan cara membuat cmdlet biner yang ditulis dalam C#. Untuk informasi tentang cmdlet berbasis skrip, lihat:
Untuk membuat cmdlet biner, Anda harus menerapkan kelas cmdlet yang berasal dari salah satu dari dua kelas dasar cmdlet khusus. Kelas turunan harus:
- Mendeklarasikan atribut yang mengidentifikasi kelas turunan sebagai cmdlet.
- Tentukan properti publik yang dihiasi dengan atribut yang mengidentifikasi properti publik sebagai parameter cmdlet.
- Ambil alih satu atau beberapa metode pemrosesan input untuk memproses rekaman.
Anda dapat memuat rakitan yang berisi kelas secara langsung dengan menggunakan cmdlet Import-Module, atau Anda dapat membuat aplikasi host yang memuat rakitan dengan menggunakan System.Management.Automation.Runspaces.InitialSessionState API. Kedua metode menyediakan akses terprogram dan baris perintah ke fungsionalitas cmdlet.
Ketentuan Cmdlet
Istilah berikut sering digunakan dalam dokumentasi cmdlet PowerShell:
Atribut cmdlet
Atribut .NET yang digunakan untuk mendeklarasikan kelas cmdlet sebagai cmdlet. Meskipun PowerShell menggunakan beberapa atribut lain yang opsional, atribut Cmdlet diperlukan. Untuk informasi selengkapnya tentang atribut ini, lihat Deklarasi Atribut Cmdlet.
Parameter cmdlet
Properti publik yang menentukan parameter yang tersedia untuk pengguna atau aplikasi yang menjalankan cmdlet. Cmdlet dapat memiliki parameter sakelar yang diperlukan, bernama, posisi, dan. Parameter pengalihan memungkinkan Anda menentukan parameter yang dievaluasi hanya jika parameter ditentukan dalam panggilan. Untuk informasi selengkapnya tentang berbagai jenis parameter, lihat Parameter Cmdlet .
Set parameter
Sekelompok parameter yang dapat digunakan dalam perintah yang sama untuk melakukan tindakan tertentu. Cmdlet dapat memiliki beberapa set parameter, tetapi setiap set parameter harus memiliki setidaknya satu parameter yang unik. Desain cmdlet yang baik sangat menyarankan bahwa parameter unik juga menjadi parameter yang diperlukan. Untuk informasi selengkapnya tentang set parameter, lihat Set Parameter Cmdlet.
Parameter dinamis
Parameter yang ditambahkan ke cmdlet saat runtime. Biasanya, parameter dinamis ditambahkan ke cmdlet ketika parameter lain diatur ke nilai tertentu. Untuk informasi selengkapnya tentang parameter dinamis, lihat Parameter Dinamis Cmdlet .
Metode pemrosesan input
Kelas System.Management.Automation.Cmdlet menyediakan metode virtual berikut yang digunakan untuk memproses rekaman. Semua kelas cmdlet turunan harus mengambil alih satu atau beberapa dari tiga metode pertama:
- System.Management.Automation.Cmdlet.BeginProcessing: Digunakan untuk menyediakan fungsionalitas opsional satu kali pra-pemrosesan untuk cmdlet.
- System.Management.Automation.Cmdlet.ProcessRecord: Digunakan untuk menyediakan fungsionalitas pemrosesan rekaman demi rekaman untuk cmdlet. Metode System.Management.Automation.Cmdlet.ProcessRecord mungkin dipanggil beberapa kali, atau tidak sama sekali, tergantung pada input cmdlet.
- System.Management.Automation.Cmdlet.EndProcessing: Digunakan untuk menyediakan fungsionalitas opsional satu kali pasca-pemrosesan untuk cmdlet.
- System.Management.Automation.Cmdlet.StopProcessing: Digunakan untuk menghentikan pemrosesan saat pengguna menghentikan cmdlet secara asinkron (misalnya, dengan menekan CTRL+C).
Untuk informasi selengkapnya tentang metode ini, lihat Metode Pemrosesan Input Cmdlet.
Saat menerapkan cmdlet, Anda harus mengambil alih setidaknya salah satu metode pemrosesan input ini. Biasanya, ProcessRecord() adalah metode yang Anda ambil alih karena dipanggil untuk setiap rekaman yang diproses cmdlet. Sebaliknya, metode BeginProcessing() dan metode EndProcessing() dipanggil satu kali untuk melakukan pra-pemrosesan atau pasca-pemrosesan rekaman. Untuk informasi selengkapnya tentang metode ini, lihat Metode Pemrosesan Input .
Fitur ShouldProcess
PowerShell memungkinkan Anda membuat cmdlet yang meminta umpan balik kepada pengguna sebelum cmdlet membuat perubahan pada sistem. Untuk menggunakan fitur ini, cmdlet harus menyatakan bahwa ia mendukung fitur ShouldProcess saat Anda mendeklarasikan atribut Cmdlet, dan cmdlet harus memanggil System.Management.Automation.Cmdlet.ShouldProcess dan System.Management.Automation.Cmdlet.ShouldContinue metode dari dalam metode pemrosesan input. Untuk informasi selengkapnya tentang cara mendukung fungsionalitas ShouldProcess, lihat Meminta Konfirmasi.
Transaksi
Grup perintah logis yang diperlakukan sebagai satu tugas. Tugas secara otomatis gagal jika ada perintah dalam grup yang gagal, dan pengguna memiliki pilihan untuk menerima atau menolak tindakan yang dilakukan dalam transaksi. Untuk berpartisipasi dalam transaksi, cmdlet harus menyatakan bahwa ia mendukung transaksi ketika atribut Cmdlet dideklarasikan. Dukungan untuk transaksi diperkenalkan di Windows PowerShell 2.0. Untuk informasi selengkapnya tentang transaksi, lihat Cara Mendukung Transaksi.
Perbedaan Cmdlet dari Perintah
Cmdlet berbeda dari perintah di lingkungan command-shell lainnya dengan cara berikut:
- Cmdlet adalah instans kelas .NET; mereka tidak berdiri sendiri yang dapat dieksekusi.
- Cmdlet dapat dibuat dari beberapa lusin baris kode.
- Cmdlet umumnya tidak melakukan penguraian, presentasi kesalahan, atau pemformatan output mereka sendiri. Penguraian, presentasi kesalahan, dan pemformatan output ditangani oleh runtime PowerShell.
- Cmdlet memproses objek input dari alur daripada dari aliran teks, dan cmdlet biasanya mengirimkan objek sebagai output ke alur.
- Cmdlet berorientasi pada rekaman karena memproses satu objek pada satu waktu.
Kelas Dasar Cmdlet
Windows PowerShell mendukung cmdlet yang berasal dari dua kelas dasar berikut.
Sebagian besar cmdlet didasarkan pada kelas .NET yang berasal dari kelas dasar System.Management.Automation.Cmdlet. Berasal dari kelas ini memungkinkan cmdlet untuk menggunakan set minimum dependensi pada runtime Windows PowerShell. Ini memiliki dua manfaat. Manfaat pertama adalah bahwa objek cmdlet lebih kecil, dan Anda cenderung tidak terpengaruh oleh perubahan pada runtime PowerShell. Manfaat kedua adalah, jika terpaksa, Anda dapat langsung membuat instans objek cmdlet dan kemudian memanggilnya secara langsung alih-alih memanggilnya melalui runtime PowerShell.
Cmdlet yang lebih kompleks didasarkan pada kelas .NET yang berasal dari kelas dasar System.Management.Automation.PSCmdlet. Turun dari kelas ini memberi Anda lebih banyak akses ke runtime PowerShell. Akses ini memungkinkan cmdlet Anda untuk memanggil skrip, mengakses penyedia, dan mengakses status sesi saat ini. (Untuk mengakses status sesi saat ini, Anda mendapatkan dan mengatur variabel dan preferensi sesi.) Namun, turunan dari kelas ini meningkatkan ukuran objek cmdlet, dan itu berarti cmdlet Anda lebih erat digabungkan dengan versi runtime PowerShell saat ini.
Secara umum, kecuali Anda memerlukan akses yang diperluas ke runtime PowerShell, Anda harus berasal dari kelas System.Management.Automation.Cmdlet. Namun, runtime PowerShell memiliki kemampuan pengelogan yang luas untuk eksekusi cmdlet. Jika model audit Bergantung pada pengelogan ini, Anda dapat mencegah eksekusi cmdlet Anda dari dalam cmdlet lain dengan berasal dari kelas System.Management.Automation.PSCmdlet.
Atribut Cmdlet
PowerShell mendefinisikan beberapa atribut .NET yang digunakan untuk mengelola cmdlet dan untuk menentukan fungsionalitas umum yang disediakan oleh PowerShell dan yang mungkin diperlukan oleh cmdlet. Misalnya, atribut digunakan untuk menunjuk kelas sebagai cmdlet, untuk menentukan parameter cmdlet, dan untuk meminta validasi input sehingga pengembang cmdlet tidak perlu menerapkan fungsionalitas tersebut dalam kode cmdlet mereka. Untuk informasi selengkapnya tentang atribut, lihat Atribut PowerShell.
Nama Cmdlet
PowerShell menggunakan pasangan nama kata kerja dan kata benda untuk memberi nama cmdlet. Misalnya, cmdlet Get-Command yang disertakan dalam PowerShell digunakan untuk mendapatkan semua cmdlet yang terdaftar di shell perintah. Kata kerja mengidentifikasi tindakan yang dilakukan cmdlet, dan kata benda mengidentifikasi sumber daya tempat cmdlet melakukan tindakannya.
Nama-nama ini ditentukan ketika kelas .NET dideklarasikan sebagai cmdlet. Untuk informasi selengkapnya tentang cara mendeklarasikan kelas .NET sebagai cmdlet, lihat Deklarasi Atribut Cmdlet.
Menulis Kode Cmdlet
Dokumen ini menyediakan dua cara untuk menemukan bagaimana kode cmdlet ditulis. Jika Anda lebih suka melihat kode tanpa banyak penjelasan, lihat Contoh Kode Cmdlet. Jika Anda lebih suka penjelasan lebih lanjut tentang kode, lihat GetProc Tutorial, StopProc Tutorial, atau SelectStr Tutorial topik.
Untuk informasi selengkapnya tentang panduan menulis cmdlet, lihat Panduan Pengembangan cmdlet .