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.
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
.