Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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.