Paramètres dynamiques des applets de commande

Les applets de commande peuvent définir des paramètres qui sont disponibles pour l’utilisateur dans des conditions spéciales, par exemple lorsque l’argument d’un autre paramètre est une valeur spécifique. Ces paramètres sont ajoutés au moment de l’exécution et sont appelés paramètres dynamiques, car ils sont ajoutés uniquement lorsque cela est nécessaire. Par exemple, vous pouvez concevoir une applet de commande qui ajoute plusieurs paramètres uniquement lorsqu’un paramètre de commutateur spécifique est spécifié.

Notes

Les fournisseurs et les fonctions PowerShell peuvent également définir des paramètres dynamiques.

Paramètres dynamiques dans les applets de commande PowerShell

PowerShell utilise des paramètres dynamiques dans plusieurs de ses applets de commande de fournisseur. Par exemple, les Get-Item applets de commande et Get-ChildItem ajoutent un paramètre CodeSigningCert au moment de l’exécution lorsque le paramètre path spécifie le chemin d’accès du fournisseur de certificats . Si le paramètre path spécifie un chemin d’accès pour un autre fournisseur, le paramètre CodeSigningCert n’est pas disponible.

Les exemples suivants montrent comment le paramètre CodeSigningCert est ajouté lors de l’exécution lors de l' Get-Item exécution de.

Dans cet exemple, le runtime PowerShell a ajouté le paramètre et l’applet de commande est réussie.

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

Dans cet exemple, un lecteur de système de fichiers est spécifié et une erreur est retournée. Le message d’erreur indique que le paramètre CodeSigningCert est introuvable.

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

Prise en charge des paramètres dynamiques

Pour prendre en charge les paramètres dynamiques, les éléments suivants doivent être inclus dans le code de l’applet de commande.

Interface

System. Management. Automation. IDynamicParameters. Cette interface fournit la méthode qui récupère les paramètres dynamiques.

Par exemple :

public class SendGreetingCommand : Cmdlet, IDynamicParameters

Méthode

System. Management. Automation. IDynamicParameters. GetDynamicParameters. Cette méthode récupère l’objet qui contient les définitions de paramètres dynamiques.

Par exemple :

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

Classe

Classe qui définit les paramètres dynamiques à ajouter. Cette classe doit inclure un attribut de paramètre pour chaque paramètre et tout alias facultatif et attributs de validation requis par l’applet de commande.

Par exemple :

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

Pour obtenir un exemple complet d’une applet de commande qui prend en charge les paramètres dynamiques, consultez comment déclarer des paramètres dynamiques.

Voir aussi

System. Management. Automation. IDynamicParameters

System. Management. Automation. IDynamicParameters. GetDynamicParameters

Guide pratique pour déclarer des paramètres dynamiques

Écriture d’une applet de commande Windows PowerShell