Cmdlet Dinamik Parametreleri


Cmdlet'ler, başka bir parametrenin bağımsız değişkeninin belirli bir değer olması gibi özel koşullar altında kullanıcının kullanabileceği parametreleri tanımlayabilir. Bu parametreler çalışma zamanında eklenir ve yalnızca ihtiyaç duyulduğunda eklendikleri için dinamik parametreler olarak anılırlar. Örneğin, yalnızca belirli bir anahtar parametresi belirtildiğinde birkaç parametre ekleyen bir cmdlet tasarlayabilirsiniz.

Not

Sağlayıcılar ve PowerShell işlevleri de dinamik parametreleri tanımlayabilir.

PowerShell cmdlet'lerindeki dinamik parametreler

PowerShell, sağlayıcı cmdlet'lerinin birçoğunda dinamik parametreler kullanır. Örneğin, Get-Item ve Get-ChildItem cmdlet'leri, Path parametresi kullanıldığında çalışma zamanında bir CodeSigningCert parametresi ekler. Sertifika sağlayıcısının yolunu belirtir. Path parametresi farklı bir sağlayıcı için bir yol belirtiyorsa CodeSigningCert parametresi kullanılamaz.

Aşağıdaki örnekler, Get-Item çalıştırıldığında CodeSigningCert parametresinin çalışma zamanında nasıl eklendiğini gösterir.

Bu örnekte PowerShell çalışma zamanı parametreyi eklemiştir ve cmdlet başarılıdır.

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

Bu örnekte, bir FileSystem sürücüsü belirtildi ve bir hata döndürüldü. Hata mesajı, CodeSigningCert parametresinin bulunamadığını belirtir.

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

Dinamik parametreler için destek

Dinamik parametreleri desteklemek için cmdlet koduna aşağıdaki öğelerin eklenmesi gerekir.

Arayüz

System.Management.Automation.IDynamicParameters. Bu arayüz dinamik parametreleri alan yöntemi sağlar.

Örneğin:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

Yöntem

System.Management.Automation.IDynamicParameters.GetDynamicParameters. Bu yöntem, dinamik parametre tanımlarını içeren nesneyi alır.

Örneğin:

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

Sınıf

Eklenecek dinamik parametreleri tanımlayan bir sınıf. Bu sınıf, her parametre için bir Parametre niteliğini ve cmdlet'in ihtiyaç duyduğu isteğe bağlı Takma Ad ve Doğrulama niteliklerini içermelidir.

Örneğin:

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

Dinamik parametreleri destekleyen bir cmdlet'in tam örneği için bkz. Dinamik Parametreler Nasıl Bildirilir.

Ayrıca bakınız

  • System.Management.Automation.IDynamicParameters
  • System.Management.Automation.IDynamicParameters.GetDynamicParameters
  • Dinamik Parametreler Nasıl Bildirilir
  • Windows PowerShell Cmdlet'i Yazma

İlgili makaleler