Bagikan melalui


Menambahkan Alias, Ekspansi Wildcard, dan Bantuan ke Parameter Cmdlet

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
    

Lihat Juga