La fonction de surcharge en PowerShell
Pouvez-vous la surcharge de fonctions dans PowerShell?
Je veux ma fonction à accepter une chaîne de caractères, tableau ou certains interrupteur.
Un exemple de ce que je veux:
- De sauvegarde-UsersData singleUser
- De Sauvegarde-UsersData @('Alice', 'Bob',
'Joe') - De sauvegarde-UsersData -tous
- "Jeux de paramètres" sont essentiellement équivalent à OO surcharge de la méthode. Ils sont un peu plus compliqué à la fois en raison de l'poewrshell de contrainte de type lourd de l'analyseur.
Vous devez vous connecter pour publier un commentaire.
Dans PowerShell fonctions ne sont pas surchargés. La dernière définition remplace le précédent dans la même portée ou masque la précédente dans un parent. Ainsi, vous devez créer une fonction unique et de fournir un moyen de distinguer son mode d'appel par des arguments.
Dans la V2, vous pouvez utiliser une fonction avancée, voir
help about_Functions_Advanced_Parameters
et d'éviter certaines codage manuel sur la résolution d'un jeu de paramètres d'ambiguïtés:Noter que ce mécanisme est parfois étrange. Par exemple dans le premier test que nous avons à spécifier le nom du paramètre
-user
explicitement. Sinon:Dans de nombreux cas standard, pas d'avancée, fonction avec un mélange de paramètres à faire:
Mais dans ce cas, vous devez résoudre (ou d'accepter et d'ignorer) les ambiguïtés, par exemple, de décider quoi faire si, par exemple:
Ici est une variante de la Romaine réponse qui je pense, est un peu plus souple: