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.
Bagian ini menjelaskan cara menambahkan alias, ekspansi kartubebas, dan pesan Bantuan ke parameter cmdlet Stop-Proc
(dijelaskan dalam Membuat Cmdlet yang MemodifikasiSistem ).
Cmdlet Stop-Proc
ini mencoba menghentikan proses yang diambil menggunakan cmdlet Get-Proc
(dijelaskan dalam Membuat Cmdlet Pertama Anda).
Menentukan Cmdlet
Langkah pertama dalam pembuatan cmdlet adalah selalu menamai cmdlet dan mendeklarasikan kelas .NET yang mengimplementasikan cmdlet. Karena Anda menulis cmdlet untuk mengubah sistem, cmdlet harus diberi nama yang sesuai. Karena cmdlet ini menghentikan proses sistem, cmdlet ini menggunakan kata kerja Stop, yang ditentukan oleh kelas System.Management.Automation.VerbsLifecycle, dengan kata benda Proc untuk menunjukkan proses. Untuk informasi selengkapnya tentang kata kerja cmdlet yang disetujui, lihat Nama Kata Kerja Cmdlet.
Kode berikut adalah definisi kelas untuk cmdlet Stop-Proc
ini.
[Cmdlet(VerbsLifecycle.Stop, "proc",
SupportsShouldProcess = true)]
public class StopProcCommand : Cmdlet
Menentukan Parameter untuk Modifikasi Sistem
Cmdlet Anda perlu menentukan parameter yang mendukung modifikasi sistem dan umpan balik pengguna. Cmdlet harus menentukan parameter Nama atau setara sehingga cmdlet akan dapat memodifikasi sistem dengan semacam pengidentifikasi. Selain itu, cmdlet harus menentukan parameter Force dan PassThru. Untuk informasi selengkapnya tentang parameter ini, lihat Membuat Cmdlet yang MemodifikasiSistem .
Menentukan Alias Parameter
Alias parameter dapat menjadi nama alternatif atau nama pendek 1 huruf atau 2 huruf yang ditentukan dengan baik untuk parameter cmdlet. Dalam kedua kasus, tujuan menggunakan alias adalah untuk menyederhanakan entri pengguna dari baris perintah. Windows PowerShell mendukung alias parameter melalui atribut System.Management.Automation.AliasAttribute, yang menggunakan sintaks deklarasi [Alias()]
.
Kode berikut menunjukkan bagaimana alias ditambahkan ke parameter Nama.
/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
Position = 0,
Mandatory = true,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true,
HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]
[Alias("ProcessName")]
public string[] Name
{
get { return processNames; }
set { processNames = value; }
}
private string[] processNames;
Selain menggunakan atribut System.Management.Automation.AliasAttribute, runtime Windows PowerShell melakukan pencocokan nama parsial, bahkan jika tidak ada alias yang ditentukan. Misalnya, jika cmdlet Anda memiliki parameter FileName dan itu adalah satu-satunya parameter yang dimulai dengan F
, pengguna dapat memasukkan Filename
, Filenam
, File
, Fi
, atau F
dan masih mengenali entri sebagai parameter FileName.
Membuat Bantuan untuk Parameter
Windows PowerShell memungkinkan Anda membuat Bantuan untuk parameter cmdlet. Lakukan ini untuk parameter apa pun yang digunakan untuk modifikasi sistem dan umpan balik pengguna. Agar setiap parameter mendukung Bantuan, Anda dapat mengatur kata kunci atribut HelpMessage di System.Management.Automation.ParameterAttribute deklarasi atribut. Kata kunci ini menentukan teks yang akan ditampilkan kepada pengguna untuk bantuan dalam menggunakan parameter . Anda juga dapat mengatur kata kunci HelpMessageBaseName untuk mengidentifikasi nama dasar sumber daya yang akan digunakan untuk pesan tersebut. Jika Anda mengatur kata kunci ini, Anda juga harus mengatur kata kunci HelpMessageResourceId untuk menentukan pengidentifikasi sumber daya.
Kode berikut dari cmdlet Stop-Proc
ini menentukan kata kunci atribut HelpMessage untuk parameter Nama.
/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
Position = 0,
Mandatory = true,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true,
HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]
Mengesampingkan Metode Pemrosesan Input
Cmdlet Anda harus mengambil alih metode pemrosesan input, paling sering ini akan System.Management.Automation.Cmdlet.ProcessRecord. Saat memodifikasi sistem, cmdlet harus memanggil metode System.Management.Automation.Cmdlet.ShouldProcess dan System.Management.Automation.Cmdlet.ShouldContinue untuk memungkinkan pengguna memberikan umpan balik sebelum perubahan dilakukan. Untuk informasi selengkapnya tentang metode ini, lihat Membuat Cmdlet yang Memodifikasi Sistem.
Mendukung Ekspansi Wildcard
Untuk mengizinkan pemilihan beberapa objek, cmdlet Anda dapat menggunakan System.Management.Automation.WildcardPattern dan System.Management.Automation.WildcardOptions kelas untuk memberikan dukungan ekspansi kartubebas untuk input parameter. Contoh pola kartubebas adalah lsa*
, *.txt
, dan [a-c]*
. Gunakan karakter kutipan belakang (`
) sebagai karakter escape ketika pola berisi karakter yang harus digunakan secara harfiah.
Ekspansi wildcard nama file dan jalur adalah contoh skenario umum di mana cmdlet mungkin ingin mengizinkan dukungan untuk input jalur ketika pemilihan beberapa objek diperlukan. Kasus umum ada dalam sistem file, di mana pengguna ingin melihat semua file yang berada di folder saat ini.
Anda harus membutuhkan implementasi pencocokan pola kartubebas yang disesuaikan hanya jarang. Dalam hal ini, cmdlet Anda harus mendukung spesifikasi POSIX 1003.2, 3.13 lengkap untuk ekspansi wildcard atau subset yang disederhanakan berikut:
- Tanda tanya (
?
). Cocok dengan karakter apa pun di lokasi yang ditentukan. - Tanda bintang (
*
). Cocok dengan nol karakter atau lebih yang dimulai dari lokasi yang ditentukan. - Kurung buka (
[
). Memperkenalkan ekspresi tanda kurung pola yang dapat berisi karakter atau rentang karakter. Jika rentang diperlukan, tanda hubung (-
) digunakan untuk menunjukkan rentang. - Tutup tanda kurung (
]
). Mengakhiri ekspresi tanda kurung pola. - Karakter escape kutipan belakang (
`
). Menunjukkan bahwa karakter berikutnya harus diambil secara harfiah. Ketahuilah bahwa saat menentukan karakter kuotasi belakang dari baris perintah (dibandingkan dengan menentukannya secara terprogram), karakter escape kutipan belakang harus ditentukan dua kali.
Nota
Untuk informasi selengkapnya tentang pola wildcard, lihat Mendukung Wildcard di Parameter Cmdlet.
Kode berikut menunjukkan cara mengatur opsi kartubebas dan menentukan pola kartubebas yang digunakan untuk menyelesaikan parameter Nama untuk cmdlet ini.
WildcardOptions options = WildcardOptions.IgnoreCase |
WildcardOptions.Compiled;
WildcardPattern wildcard = new WildcardPattern(name,options);
Kode berikut menunjukkan cara menguji apakah nama proses cocok dengan pola kartubebas yang ditentukan. Perhatikan bahwa, dalam hal ini, jika nama proses tidak cocok dengan pola, cmdlet melanjutkan untuk mendapatkan nama proses berikutnya.
if (!wildcard.IsMatch(processName))
{
continue;
}
Sampel Kode
Untuk kode sampel C# lengkap, lihat sampel StopProcessSample03.
Tentukan Tipe dan Pemformatan Objek
Windows PowerShell meneruskan informasi antar cmdlet menggunakan objek .NET. Akibatnya, cmdlet mungkin perlu menentukan jenisnya sendiri, atau cmdlet mungkin perlu memperluas jenis yang ada yang disediakan oleh cmdlet lain. Untuk informasi selengkapnya tentang menentukan jenis baru atau memperluas jenis yang sudah ada, lihat Memperluas Tipe Objek dan Pemformatan.
Membangun Cmdlet
Setelah menerapkan cmdlet, cmdlet harus didaftarkan ke Windows PowerShell melalui snap-in Windows PowerShell. Untuk informasi selengkapnya tentang mendaftarkan cmdlet, lihat Cara Mendaftarkan Cmdlet, Penyedia, dan Aplikasi Host.
Menguji Cmdlet
Ketika cmdlet Anda telah terdaftar di Windows PowerShell, Anda dapat mengujinya dengan menjalankannya di baris perintah. Mari kita uji sampel Stop-Proc cmdlet. Untuk informasi selengkapnya tentang menggunakan cmdlet dari baris perintah, lihat Memulai Windows PowerShell.
Mulai Windows PowerShell dan gunakan
Stop-Proc
untuk menghentikan proses menggunakan alias ProcessName untuk parameter Nama.PS> Stop-Proc -ProcessName notepad
Output berikut muncul.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (3496)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
Buat entri berikut pada baris perintah. Karena parameter Nama wajib, Anda diminta untuk itu. Memasukkan
!?
memunculkan teks bantuan yang terkait dengan parameter .PS> Stop-Proc
Output berikut muncul.
Cmdlet Stop-Proc at command pipeline position 1 Supply values for the following parameters: (Type !? for Help.) Name[0]: !? The name of one or more processes to stop. Wildcards are permitted. Name[0]: notepad
Sekarang buat entri berikut untuk menghentikan semua proses yang cocok dengan pola kartubebas
*note*
. Anda diminta sebelum menghentikan setiap proses yang cocok dengan pola.PS> Stop-Proc -Name *note*
Output berikut muncul.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (1112)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
Output berikut muncul.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "ONENOTEM (3712)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): N
Output berikut muncul.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "ONENOTE (3592)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): N