Aracılığıyla paylaş


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ına eklenir ve yalnızca gerektiğinde eklendiğinden dinamik parametreler olarak adlandırılır. Örneğin, yalnızca belirli bir anahtar parametresi belirtildiğinde birkaç parametre ekleyen bir cmdlet tasarlayabilirsiniz.

Uyarı

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

PowerShell cmdlet'lerinde dinamik parametreler

PowerShell, çeşitli sağlayıcı cmdlet'lerinde dinamik parametreler kullanır. Örneğin, Yolu parametresi Sertifika sağlayıcı yolunu belirttiğinde Get-Item ve Get-ChildItem cmdlet'leri çalışma zamanında bir CodeSigningCert parametresi ekler. Yolu parametresi farklı bir sağlayıcının yolunu belirtiyorsa CodeSigningCert parametresi kullanılamaz.

Aşağıdaki örneklerde, Get-Item çalıştırıldığında CodeSigningCert parametresinin çalışma zamanına nasıl eklendiği gösterilmektedir.

Bu örnekte PowerShell çalışma zamanı parametresini 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ü belirtilir ve bir hata döndürülür. Hata iletisi, CodeSigningCert parametresinin bulunamadığını gösterir.

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 aşağıdaki öğelerin cmdlet koduna eklenmesi gerekir.

Arayüz

System.Management.Automation.IDynamicParameters. Bu arabirim, 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 özniteliği ve cmdlet'i tarafından gereken isteğe bağlı Diğer Ad ve Doğrulama özniteliklerini 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 Bildirme.

Ayrıca bkz.