J'ai essayé de chercher une réponse, mais je pense que le fait d'avoir les mots PowerShell et paramètre ensemble dans un ensemble de mots clés ne facilite pas la recherche
Ma question est, j'écris une fonction, et j'ai fourni un paramètre, mais le paramètre doit faire partie d'une liste de chaînes spécifiques.
Existe-t-il un moyen de fournir ces chaînes dans le script afin que si je tape "myfunction -parameter .." je puisse utiliser la complétion de tabulation pour la valeur du paramètre?
Si vous utilisez PowerShell V2, vous pouvez utiliser l'attribut [ValidateSet()]
par exemple:
param(
[Parameter()]
[ValidateSet('foo','bar','baz')]
[string[]]
$Item
)
Consultez la rubrique d'aide en exécutant:
man about_functions_advanced_parameters
Vous pouvez utiliser [ValidateSet()]
comme le montre Keith, mais cela ne fonctionne pas très bien avec un grand nombre de valeurs possibles (le remplissage de la liste lorsque vous appuyez sur Tab devient très lent). Une autre méthode pour obtenir une tabulation complète consiste à créer une énumération personnalisée:
http://blogs.msdn.com/b/powershell/archive/2008/06/03/v2-custom-enums.aspx
et transtyper le paramètre en tant que type d'énumération. Cela impose certaines limitations sur le jeu de caractères autorisé dans vos chaînes (essentiellement des lettres et des chiffres), mais cela remplira la liste de fin de tabulation beaucoup plus rapidement s'il s'agit d'une liste de valeurs relativement grande.