Bagikan melalui


Parameter dinamis cmdlet

Cmdlet dapat menentukan parameter yang tersedia untuk pengguna dalam kondisi khusus, seperti ketika argumen parameter lain adalah nilai tertentu. Parameter ini ditambahkan pada runtime dan disebut sebagai parameter dinamis karena hanya ditambahkan saat diperlukan. Misalnya, Anda dapat merancang cmdlet yang menambahkan beberapa parameter hanya ketika parameter sakelar tertentu ditentukan.

Nota

Penyedia dan fungsi PowerShell juga dapat menentukan parameter dinamis.

Parameter dinamis dalam cmdlet PowerShell

PowerShell menggunakan parameter dinamis di beberapa cmdlet penyedianya. Misalnya, cmdlet Get-Item dan Get-ChildItem menambahkan parameter CodeSigningCert pada runtime saat parameter Jalur menentukan jalur penyedia Sertifikat. Jika parameter Jalur menentukan jalur untuk penyedia yang berbeda, parameter CodeSigningCert tidak tersedia.

Contoh berikut menunjukkan bagaimana parameter CodeSigningCert ditambahkan pada runtime saat Get-Item dijalankan.

Dalam contoh ini, runtime PowerShell telah menambahkan parameter dan cmdlet berhasil.

Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location   : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}

Dalam contoh ini, drive FileSystem ditentukan dan kesalahan dikembalikan. Pesan kesalahan menunjukkan bahwa parameter CodeSigningCert tidak dapat ditemukan.

Get-Item -Path C:\ -CodeSigningCert
Get-Item : A parameter cannot be found that matches parameter name 'CodeSigningCert'.
At line:1 char:37
+  Get-Item -Path C:\ -CodeSigningCert <<<<
--------
    CategoryInfo          : InvalidArgument: (:) [Get-Item], ParameterBindingException
    FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand

Dukungan untuk parameter dinamis

Untuk mendukung parameter dinamis, elemen berikut harus disertakan dalam kode cmdlet.

Antarmuka

System.Management.Automation.IDynamicParameters. Antarmuka ini menyediakan metode yang mengambil parameter dinamis.

Contohnya:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

Metode

System.Management.Automation.IDynamicParameters.GetDynamicParameters. Metode ini mengambil objek yang berisi definisi parameter dinamis.

Contohnya:

 public object GetDynamicParameters()
 {
   if (employee)
   {
     context= new SendGreetingCommandDynamicParameters();
     return context;
   }
   return null;
}
private SendGreetingCommandDynamicParameters context;

Kelas

Kelas yang menentukan parameter dinamis yang akan ditambahkan. Kelas ini harus menyertakan atribut Parameter untuk setiap parameter dan atribut Alias opsional dan Validasi yang diperlukan oleh cmdlet.

Contohnya:

public class SendGreetingCommandDynamicParameters
{
  [Parameter]
  [ValidateSet ("Marketing", "Sales", "Development")]
  public string Department
  {
    get { return department; }
    set { department = value; }
  }
  private string department;
}

Untuk contoh lengkap cmdlet yang mendukung parameter dinamis, lihat Cara Mendeklarasikan Parameter Dinamis.

Lihat juga