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