windows deployment scripting shell

El mejor lenguaje de scripting "oficial" para programadores de Windows



deployment shell (9)

Supongamos que hay varios proyectos en su mayoría mantenidos por internos inteligentes, que finalmente se van después de un período de tiempo. Los scripts se usan aquí y allá en partes clave, por ejemplo, para hacer una copia de seguridad de una base de datos, cambiarle el nombre, comprimirla, moverla a través de ssh, descomprimirla y luego restaurarla con diferentes configuraciones. Ya sabes, las cosas de scripting.

Se establecen los lenguajes de programación para el lado de la aplicación, pero los de los scripts se han relajado. Actualmente, probablemente haya una mezcla saludable de archivos bash y .bat, y tal vez algunos Perl.

1) Para evitar la proliferación del lenguaje, y 2) porque no quiero forzar a los futuros programadores de Windows, me gustaría establecer un lenguaje de scripting "oficial".

Google escogió Python para esto, y es famoso por ser legible, fácil de aprender y tener una buena biblioteca; sin embargo, personalmente no me resulta tan legible en comparación con la gramática tipo C, Pascal o Ruby.

En cualquier caso, si tuviera que usar solo un lenguaje de scripting en una máquina con Windows (con Cygwin si lo desea) para todos los scripts, ¿qué le gustaría que fuera, y por qué?

Guerras religiosas relacionadas:


El mejor lenguaje de scripting que he encontrado para aplicaciones de interfaz y tipo de control en Windows es AutoHotKey. Cualquiera que esté desarrollando Windows debería aprender sobre este lenguaje ... Puede ahorrarte una gran cantidad de tiempo simplemente automatizando tareas de Windows retardadas ...

Una de las herramientas más útiles que he encontrado para Windows es Texter

Esta utilidad está escrita en AutoHotKey y me evita tener que escribir nada más que unas pocas veces ... ¡Una herramienta indispensable para un programador o cualquier persona que complete formularios o tickets ...!


Cuando escribí instaladores de productos multiplataforma, codificar un script de shell de UNIX para Linux / Mac / Solaris, etc. es realmente fácil, pero tratar de realizar tareas equivalentes en BAT es como trabajar en la oscuridad, bajo el agua, con las dos manos atadas tu espalda. No puedo afirmar lo suficiente que los guiones BAT son una plaga para la humanidad.

Entonces, lo que escuché sobre PowerShell me hace feliz. Es un salvavidas para los desarrolladores de Windows. El único problema es que creo que todavía es una instalación separada, no está disponible por defecto (he leído que estará en Windows Server 2008 y Windows 7).

Oh, bueno, Microsoft tardó 20 años en reemplazar las secuencias de comandos de BAT con algo tan capaz como el shell de UNIX, así que supongo que no debería ser demasiado ingrato. > :-P

Obtenga el instalador de PowerShell aquí:

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx


Gah. Iba a decir "powershell" pero estaba demasiado ocupado codificando a powershell para enviar mi respuesta aquí, que otras 2 personas me ganaron.


Potencia Shell. Tiene la amplitud y la profundidad, y es totalmente compatible (ahora y en el futuro). A diferencia de Cygwin, por ejemplo.


PowerShell: diseñado desde cero para ser un lenguaje de secuencias de comandos de Windows, y puede engancharse al CLR para una funcionalidad avanzada.

(Sí, me doy cuenta de que esto no funciona bajo cygwin ... pero ¿por qué es eso un requisito?)


Trataré de ofrecer una alternativa: JavaScript y VBScript funcionan bien incluso en versiones de Windows que ya pasaron, y no necesitan una instalación separada como PowerShell. ;) Por supuesto, PowerShell tiene más poder : P


Te insto a que le des una oportunidad a Python. Parece un poco extraño para los programadores ''C'' al principio, pero es fácil de aprender y, lo que es más importante, fácil de recordar. Vas a tener internos de varios niveles de habilidad usando y modificando el código para que quieras algo que pueda extraer de una amplia base de usuarios. Y si va a tomarse la molestia de instalar algo nuevo, ¿por qué elegir PowerShell que será un callejón sin salida para cualquiera que lo use?


Para su descripción particular, PowerShell suena como un buen camino por recorrer ... pero sería un buen argumento para JScript en WSH (o JavaScript en Rhino / etc.). Suena como que te gusta CYGWIN, pero Powershell actualmente no tiene soporte para otras plataformas (creo que hay demasiadas cosas nativas, esa es una discusión separada de la OMI, pero Google debería responderla).

Más o menos hago el caso aquí: http://mikesharp.wordpress.com/2011/04/03/jquery-for-administrators/

Algunos aspectos destacados:

  • JavaScript está instalado de forma predeterminada en todos los sistemas operativos de Windows después de ''95
  • Los scripts de JScript funcionan "de fábrica" ​​con Active Directory
  • ECMAScript es un estándar abierto (que JScript es una implementación de)
  • A través de ActiveX / COM JScript puede hacer la mayor parte de lo que Powershell puede hacer y bajo Rhino tiene el poder de Java
  • Se puede usar para crear aplicaciones HTA (y más tarde, aplicaciones metropolitanas con WinRT / HTML5)

JScript no tiene acceso directo al .NET framework, aunque hay algunos motores de JavaScript de terceros en .NET puro que lo interpretan y pueden compartir objetos como Jurassic e IronJS. También envoltorios como JavaScriptDotNet (alrededor de Chrome / V8). Es probable que Powershell sea más rápido que JScript en WSH, pero no se puede decir lo mismo de otros intérpretes de terceros.

Por favor, no vaya con VBScript (sin probar / capturar, sin OOP real, propietario, obsoleto, etc.).


Si eres como yo y quieres mostrar barras de progreso ingeniosas o pantallas de bienvenida mientras tu guión está haciendo magia (en lugar de una ventana de símbolo del sistema en negro / gris), usa la tecla AutoHotkey. Mostrando una barra de progreso es un PITA con JScript / VBScript (WSH) y / o PowerShell de lo que he encontrado. En AHK es tan simple como:

Progress, b2 m, ACME App, Doing some magic...

También puede interactuar con casi cualquier control en cualquier ventana y automatizar aplicaciones que no están destinadas a ser automatizadas.