2009-07-22 2 views
8

Pour certaines applications de surveillance et pour les tâches qui doivent être planifiées pour interroger certains services, nous utilisons traditionnellement une application console qui appelle à son tour certaines méthodes dans notre couche de gestion ou interroge les emplacements de fichiers/emplacements ftp.Quels sont les avantages d'un script Powershell sur une application console?

Pour une autre tâche que j'effectuais, j'ai commencé à jouer avec Powershell et j'ai été assez impressionné, ce qui m'a fait réfléchir sur les avantages d'un script Powershell et d'une application console.

Il semble que le script powershell puisse être édité à la volée sans recompilation, ce qui en fait un plus pour les changements potentiels, mais il doit y avoir des inconvénients que je ne vois pas.

Alors, quand les gens conseilleraient de changer une application console pour un script Powershell?

Répondre

7

Je pense que la meilleure façon de penser à ceci est, quand choisiriez-vous une application de console? Si vous n'êtes pas préoccupé par la rapidité d'exécution, la distribution à des tiers (PowerShell n'est pas encore standard) ou la protection du code source, je pense que PowerShell est un concurrent sérieux. Par ailleurs, PowerShell peut manipuler les objets COM prêts à l'emploi. En termes d'automatisation des tâches, il fonctionne très bien comme un code de liaison entre l'infrastructure basée sur .NET et celle basée sur COM.

2

Eh bien, il semble que votre étui soit un ajustement parfait pour les choses pour lesquelles Powershell a été conçu. Le seul inconvénient que je pourrais imaginer est que Powershell peut être un peu lent car il est interprété et non compilé et n'a pas non plus été optimisé pour la vitesse mais plutôt pour la facilité d'utilisation.

1

Vous devriez également tenir compte de la taille de «l'application». Si un seul fichier, petit, peut gérer la tâche, alors PowerShell est une excellente solution. Une fois que vous avez dépassé ce stade, vous devez poser des questions sur la maintenabilité et la compréhensibilité du script par rapport au code d'application typique. (Et le contrôle de la source ne devrait pas entrer dans l'équation puisque les deux devraient être stockés là!)

5

Le plus grand avantage pour moi est de perdre le processus de compilation et le déploiement de binaires. Je vais vous donner un exemple. J'ai eu une application qui a utilisé quelques dossiers du dossier des assemblages privés de Visual Studio, des binaires instrumnetés de l'application et des tests unitaires pendant notre processus de compilation. Quand VS 2008 est sorti, j'ai dû changer de ressources, recompiler, et ensuite je devais déployer des binaires sur tous nos serveurs de build. J'ai décidé que c'était stupide, et est passé à PowerShell alors maintenant mon script détermine quelle version de vsts est installée et charge dans la plus haute version dll. Maintenant, vous pouvez le faire dans une application en utilisant la réflexion et la liaison tardive, mais c'est beaucoup plus facile dans PowerSHell, et chaque ENgineer de version peut simplement modifier le script rapidement dans un éditeur de texte lorsque nous ajoutons des binaires ou des binaires. . Pour les petites applications internes, j'ai toujours PowerSHell maintenant ...

1

Ne sous-estimez pas la valeur de l'analyse de paramètres essentiellement libre, qui est encore meilleure avec les fonctions avancées dans V2. Pensez à toutes les petites applications de console que vous écrivez et quelle partie de ce code est l'analyse des paramètres par rapport à faire quelque chose d'intéressant. Pensez également à la façon dont vous gérez les paramètres d'analyse syntaxique? Traitez-vous les paramètres positionnels vs nommés? Et la validation des paramètres? Valeurs de paramètre par défaut? Qu'en est-il des fichiers de réponses? Alors que Posh ne prend pas en charge les fichiers de réponses dans un sens littéral, dans V2, il existe un opérateur splatting qui vous permet d'empaqueter des paramètres dans un tableau ou une table de hachage - une fonctionnalité très similaire.

OTOH à un moment donné si mon script commence à devenir énorme et que j'appelle.NET code plus de cmdlets, je commence à penser à écrire une cmdlet pour faire le travail. Le débogueur VS est toujours meilleur que même les capacités de débogage V2.

Questions connexes