Partager via


Paramètres dynamiques de l’applet de commande

Les applets de commande peuvent définir des paramètres 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 si 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é.

Remarque

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 applets de commande Get-Item et Get-ChildItem ajoutent un paramètre CodeSigningCert lors de l’exécution lorsque le paramètre Path spécifie le chemin d’accès certificat. 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é au moment de l’exécution lorsque Get-Item est exécuté.

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

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

Dans cet exemple, un lecteur FileSystem 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 Parameter pour chaque paramètre et tous les attributs facultatifs Alias et 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