2016-12-31 1 views
2

Disons que je l'ai écrit un script PowerShell qui comprend ce commmand:Cohérence de Microsoft dans la dénomination des paramètres PowerShell CmdLet

Get-ChildItem -Recurse 

Mais au lieu que j'ai écrit:

Get-ChildItem -Re 

Pour gagner du temps. Après un certain temps et j'ai mis à jour ma version PowerShell, Microsoft a décidé d'ajouter un paramètre à Get-ChildItem appelé "-Return", qui retourne par exemple True ou False selon que des éléments sont trouvés ou non.

Dans ce scénario virtuel, dois-je modifier tous mes anciens scripts pour m'assurer que le script fonctionnera comme prévu? Je comprends la tentative de Microsoft de sauver mon temps de frappe, mais c'est mon souci et donc je vais probablement toujours essayer d'écrire le nom complet du paramètre. À moins bien sûr que vous sachiez quelque chose que je ne sais pas. Merci pour votre perspicacité!

Répondre

11

Cela ressemble plus à une diatribe qu'une question, mais de répondre:

Dans ce scénario virtuel, dois-je I pour modifier tous mes anciens scripts pour faire en sorte que le script fonctionnera comme prévu?

Oui!

Vous devez toujours utiliser les noms complets des paramètres dans les scripts (ou tout autre bout de code réutilisable).

La résolution automatique des noms de paramètres partiels, des alias et d'autres raccourcis est idéale pour la commodité lors de l'utilisation interactive de PowerShell. Il nous permet de feu vers le haut powershell.exe et à faire:

ls -re *.ps1|% FullName 

quand on veut trouver le chemin de tous les scripts du profil. Idéal pour l'exploration!

Mais si je devais intégrer cette fonctionnalité dans un script que je ferais:

Get-ChildItem -Path $Home -Filter *.ps1 -Recurse |Select-Object -ExpandProperty FullName 

pas seulement pour les raisons que vous avez mentionnés, mais aussi pour la cohérence et la lisibilité - si un de mes collègues vient et peut-être n'est pas familier avec les raccourcis que j'utilise, il sera toujours capable de discerner la signification et la sortie attendue du pipeline.


Note: Il n'y a threeopenissues sur GitHub d'ajouter des règles d'avertissement pour cela dans PSScriptAnalyzer - Je suis sûr que les mainteneurs du projet aimeraient un coup de main :-)

+0

Merci pour votre répondre. Ce n'est pas une diatribe, mais je lisais le livre populaire "Apprenez Windows PowerShell dans un mois" et l'auteur n'a pas spécifié cette exigence dans les scripts. Il a juste dit que vous pouviez écrire le paramètre court etc. J'ai donc pensé qu'il était important de demander si Microsoft avait quelque chose à dire sur ce sujet dont je n'avais pas entendu parler. Quoi qu'il en soit, ce que vous avez dit a beaucoup de sens. Merci beaucoup. –

+0

Je ne trouve pas de références officielles, mais chaque employé Microsoft et MVP dont j'ai discuté est d'accord sans clignoter –

+0

Edit: L'auteur du livre auquel j'ai fait référence * écrit toujours le paramètre complet * lors de l'écriture scripts plus tard dans le chapitre. Je voulais juste corriger cette information pour lui donner un crédit approprié. –