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