2009-07-22 13 views
8

Para algunas aplicaciones de supervisión y para tareas que se deben programar para sondear algún servicio, tradicionalmente usamos una aplicación de consola que a su vez llama a algunos métodos en nuestra capa de negocios o sondea ubicaciones de archivos/ubicaciones ftp.¿Cuáles son los beneficios de un script de Powershell sobre una aplicación de consola?

Para otra tarea que estaba llevando a cabo comencé a jugar con Powershell y quedé muy impresionado, lo que me hizo pensar cuáles son los beneficios de un script de Powershell y una aplicación de consola.

Parece que el script de powershell se puede editar sobre la marcha sin recompilar, lo que lo convierte en una ventaja para los cambios potenciales, pero debe haber inconvenientes que no veo.

Entonces, ¿cuándo aconsejarían las personas intercambiar una aplicación de consola por un script de Powershell?

Respuesta

7

Creo que la mejor manera de pensar en esto es, ¿cuándo elegirías una aplicación de consola?

Si no está preocupado por la velocidad de ejecución en tiempo de ejecución, la distribución a terceros (PowerShell aún no es el estándar) o la protección del código fuente, entonces creo que PowerShell es un gran competidor.

Por cierto, PowerShell puede manipular objetos COM desde el primer momento, por lo que en términos de automatización de tareas funciona bastante bien como código de cola entre .NET y la infraestructura basada en COM.

2

Bueno, parece que su estuche es casi perfecto para las cosas que Powershell fue diseñado. El único inconveniente posible que podría imaginarse es que Powershell puede ser un poco lento, ya que se interpreta y no se compila, y tampoco se optimizó por la velocidad, sino por la facilidad de uso.

1

También debería considerar el tamaño de la "aplicación". Si un archivo único y pequeño puede administrar la tarea, entonces PowerShell es una gran solución. Una vez que haya superado eso, deberá hacer preguntas sobre la capacidad de mantenimiento y la comprensibilidad del guión frente al código de aplicación típico. (¡Y el control de fuente no debería entrar en la ecuación ya que ambos deberían almacenarse allí!)

5

El mayor beneficio para mí es perder el proceso de compilación y el despliegue de los binarios. Te daré un ejemplo. Tuve una aplicación que utilizaba algunas de las assemplies de la carpeta de ensamblados privados de Visual Studio, la aplicación analizaba los binarios y ejecutaba Pruebas unitarias durante nuestro proceso de compilación. Cuando salió VS 2008, tuve que cambiar recursos, volver a compilar y luego tenía que implementar binarios en todos nuestros servidores de compilación. Decidí que esto era estúpido, y cambié a PowerShell, así que ahora mi script se da cuenta de qué versión de vsts está instalada y se carga en las dll con la versión más alta. Ahora puedes hacer esto en una aplicación utilizando reflejo y enlace tardío y todo eso, pero es mucho más fácil en PowerSHell, que cada Release Engineer puede modificar el script rápidamente en un editor de texto cuando agregamos binarios o eliminamos los binarios que necesitamos para instrumentar . Para las aplicaciones internas más pequeñas, siempre utilizo PowerSHell ahora ...

1

No subestime el valor del análisis de parámetros esencialmente libre, que mejora aún más con las funciones avanzadas en V2. Piensa en todas las pequeñas aplicaciones de consola que escribes y en qué parte de ese código es un análisis de parámetros en lugar de hacer algo interesante. ¿También piensa en qué tan bien maneja el análisis de parámetros? ¿Maneja parámetros posicionales versus parámetros? ¿Qué tal la validación de parámetros? ¿Valores de parámetros predeterminados? ¿Qué hay de los archivos de respuesta? Si bien Posh no admite archivos de respuesta en un sentido literal, en V2, hay un operador de splating que le permite empaquetar parámetros en una matriz o hashtable, una capacidad muy similar.

OTOH en algún momento si mi script comienza a ser enorme y estoy invocando.NET código más de cmdlets, empiezo a pensar en escribir un cmdlet para hacer el trabajo. El depurador VS es aún mejor que incluso las capacidades de depuración de V2.

Cuestiones relacionadas