Bagikan melalui


Jenis Parameter Cmdlet

Topik ini menjelaskan berbagai jenis parameter yang dapat Anda deklarasikan dalam cmdlet. Parameter cmdlet dapat berupa parameter posisi, bernama, wajib, opsional, atau beralih.

Parameter Posisi dan Bernama

Semua parameter cmdlet diberi nama atau parameter posisi. Parameter bernama mengharuskan Anda mengetik nama parameter dan argumen saat memanggil cmdlet. Parameter posisi hanya mengharuskan Anda mengetik argumen dalam urutan relatif. Sistem kemudian memetakan argumen pertama yang tidak disebutkan namanya ke parameter posisi pertama. Sistem memetakan argumen kedua yang tidak disebutkan namanya ke parameter kedua yang tidak disebutkan namanya, dan sebagainya. Secara default, semua parameter cmdlet diberi nama parameter.

Untuk menentukan parameter bernama, hilangkan kata kunci Position dalam deklarasi atribut Parameter, seperti yang ditunjukkan dalam deklarasi parameter berikut.

[Parameter(ValueFromPipeline=true)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Untuk menentukan parameter posisi, tambahkan kata kunci Position dalam deklarasi atribut Parameter, lalu tentukan posisi. Dalam sampel berikut, parameter UserName dinyatakan sebagai parameter posisi dengan posisi 0. Ini berarti bahwa argumen pertama panggilan secara otomatis terikat ke parameter ini.

[Parameter(Position = 0)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Nota

Desain cmdlet yang baik merekomendasikan agar parameter yang paling banyak digunakan dideklarasikan sebagai parameter posisional sehingga pengguna tidak perlu memasukkan nama parameter saat cmdlet dijalankan.

Parameter posisional dan bernama menerima argumen tunggal atau beberapa argumen yang dipisahkan oleh koma. Beberapa argumen hanya diperbolehkan jika parameter menerima koleksi seperti array string. Anda dapat mencampur parameter posisi dan bernama dalam cmdlet yang sama. Dalam hal ini, sistem mengambil argumen bernama terlebih dahulu, lalu mencoba memetakan argumen yang tidak disebutkan namanya yang tersisa ke parameter posisi.

Perintah berikut menunjukkan berbagai cara di mana Anda dapat menentukan argumen tunggal dan beberapa untuk parameter cmdlet Get-Command. Perhatikan bahwa dalam dua sampel terakhir, -Name tidak perlu ditentukan karena parameter Nama didefinisikan sebagai parameter posisi.

Get-Command -Name Get-Service
Get-Command -Name Get-Service,Set-Service
Get-Command Get-Service
Get-Command Get-Service,Set-Service

Parameter Wajib dan Opsional

Anda juga dapat menentukan parameter cmdlet sebagai parameter wajib atau opsional. (Parameter wajib harus ditentukan sebelum runtime PowerShell memanggil cmdlet.) Secara default, parameter didefinisikan sebagai opsional.

Untuk menentukan parameter wajib, tambahkan kata kunci Mandatory dalam deklarasi atribut Parameter, dan atur ke true, seperti yang ditunjukkan dalam deklarasi parameter berikut.

[Parameter(Position = 0, Mandatory = true)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Untuk menentukan parameter opsional, hilangkan kata kunci Mandatory dalam deklarasi atribut Parameter, seperti yang ditunjukkan dalam deklarasi parameter berikut.

[Parameter(Position = 0)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Beralih Parameter

PowerShell menyediakan jenis System.Management.Automation.SwitchParameter yang memungkinkan Anda menentukan parameter yang nilai defaultnya false kecuali parameter ditentukan saat cmdlet dipanggil. Jika memungkinkan, gunakan parameter pengalihan alih-alih parameter Boolean.

Pertimbangkan contoh berikut. Banyak cmdlet PowerShell mengembalikan output. Namun, cmdlet ini memiliki parameter sakelar PassThru yang mengambil alih perilaku default. Saat Anda menggunakan parameter PassThru, cmdlet mengembalikan objek output ke alur.

Untuk menentukan parameter sakelar, nyatakan properti sebagai jenis [SwitchParameter], seperti yang ditunjukkan dalam sampel berikut.

[Parameter()]
public SwitchParameter GoodBye
{
  get { return goodbye; }
  set { goodbye = value; }
}
private bool goodbye;

Untuk membuat cmdlet bertindak pada parameter saat ditentukan, gunakan struktur berikut dalam salah satu metode pemrosesan input.

protected override void ProcessRecord()
{
  WriteObject("Switch parameter test: " + userName + ".");
  if (goodbye)
  {
    WriteObject(" Goodbye!");
  }
} // End ProcessRecord

Secara default, parameter pengalihan dikecualikan dari parameter posisi. Anda dapat mengambil alihnya dalam atribut Parameter, tetapi dapat membingungkan pengguna.

Parameter sakelar desain sehingga menggunakan parameter mengubah perilaku default perintah ke mode yang kurang umum atau lebih rumit. Perilaku paling sederhana dari perintah harus merupakan perilaku default yang tidak memerlukan penggunaan parameter sakelar. Dasar perilaku yang dikontrol oleh sakelar pada nilai sakelar, bukan keberadaan parameter.

Ada beberapa cara untuk menguji keberadaan parameter pengalihan:

  • Invocation.BoundParameters berisi nama parameter pengalihan sebagai kunci
  • PSCmdlet.ParameterSetName saat sakelar menentukan kumpulan parameter unik

Misalnya, dimungkinkan untuk memberikan nilai eksplisit untuk sakelar menggunakan -MySwitch:$false atau splatting. Jika Anda hanya menguji keberadaan parameter, perintah bereaksi seolah-olah nilai sakelar $true alih-alih $false.

Lihat Juga

Menulis Cmdlet Windows PowerShell