¿Qué lenguajes de script son útiles para la automatización de Windows?
¿Qué lenguajes de script son útiles para la automatización de Windows?
Respuestas:
A partir de Windows 7 y Server 2008, es razonable considerar PowerShell, ya que se incluye con Windows, y también es fundamental administrar software de servidor como Lync y Exchange, ya que hay un conjunto completo de comandos disponibles para ellos. Hay una lista creciente de características disponibles, consulte el Centro de secuencias de comandos para obtener más información.
Windows Script Host (WSH) es técnicamente un host de secuencias de comandos para ActiveX Scripting Engines. VBScript y JScript (la implementación de JavaScript de Microsoft) son los dos motores instalados por defecto. Muchos otros están disponibles como código abierto, incluidos Perl, PHP y Ruby.
Usando una sintaxis similar a VB6 y VB.NET, los VBScripts carecen de fácil acceso a las clases .NET (Powershell está escrito en .NET, por lo que tiene acceso a todas las funciones .NET). VBScript aprovecha principalmente el servicio WMI y los objetos que expone.
Ejemplo: Esto crea un punto de restauración.
Set wmi, whatName, errResults
wmi = GetObject("winmgmts:\\.\root\default:Systemrestore")
whatName = InputBox("Enter a name for the Restore Point",WScript.ScriptName)
errResults = wmi.CreateRestorePoint (whatName, 12, 100)
If errResults <> 0 then
Wscript.Echo "Error " & errResults & " : Unable to create Restore Point"
End If
También puede escribir el mismo script usando ECMAScript:
var wmi = WScript.GetObject("winmgmts:\\.\root\default:Systemrestore");
var whatName = WSHInputBox("Enter a name for the Restore Point",Script.ScriptName);
var errResults = wmi.CreateRestorePoint(whatName, 12, 100);
if(errResults != 0) {
WScript.Echo("Error "+ err + " : Unable to create Restore Point");
}
Existe, por supuesto, el buen archivo Batch. No necesitan introducción.
Todavía escribo archivos por lotes de DOS, incluso en Windows 7. Para la mayoría de las tareas, esto todavía funciona bastante bien y es muy sencillo trabajar con él (también, muchos de los comandos de DOS como "FOR" se han mejorado con el tiempo y proporcionan más opciones y funcionalidades que no estaban disponibles hace más de una década).
Para mí, un archivo por lotes de DOS sigue siendo el principal lenguaje de script para Windows (ciertamente es tradicional), pero todos tienen necesidades y preferencias diferentes. Hay muchas cosas que los archivos por lotes de DOS no pueden hacer (los lenguajes de secuencias de comandos también pueden presentar limitaciones), y en las raras ocasiones en que me encuentro con esto, miro cuáles son mis otras opciones (a menudo es Perl, o a veces podría ser para escribir un pequeño programa o una aplicación completa).
Comprender lo que necesita lograr es un paso muy importante para decidir qué herramientas usar. La familiaridad con las herramientas es otro aspecto importante que puede limitar sus opciones. Si está tratando de decidir qué lenguaje de programación [o programación] aprender, entonces espero que esto sea útil para usted.
cmd
realmente es una monstruosidad, fácilmente el PEOR lenguaje de scripting de shell que he tenido la desgracia de usar.
Eso depende de a quién se le pregunte. Algunos nunca saldrán del lote, algunos amor vbscript algunos amor PowerShell, otros como AutoIt. Luego están las plataformas independientes, como Python y Perl, que algunos jurarán por todo.
Supongo que el "lenguaje" de secuencias de comandos oficial para Windows sería (y lo ha sido desde Win95) Windows Script Host .
Técnicamente, WSH no es un lenguaje en sí mismo, sino más bien un entorno (no GUI) que expone las interfaces COM para permitirle usar (casi) cualquier lenguaje de script que desee, para hacer cosas del sistema operativo, incluso cosas que no tienen una forma nativa incorporada en el idioma (por ejemplo, Ruby no tiene una forma integrada de iniciar sesión en Windows o TCL / TK no tiene una forma integrada de mostrar el cuadro de diálogo Ejecutar).
Es posible que haya visto algunos archivos WSF que pueden incluir varios idiomas en un archivo, pero generalmente las secuencias de comandos WSH se escriben en un idioma y se distribuyen con una extensión correspondiente a la versión de secuencia de comandos de ese lenguaje (por ejemplo, VBS para secuencias de comandos VisualBasic, PYS para PythonScript, etc. .)
Yo diría AutoIt, proporciona un desarrollo muy rápido y fácil en Windows y está muy unido a él. Esto significa que las tareas que generalmente requieren bastante código en otros idiomas se pueden realizar literalmente en una línea en autoit. Características como la compilación directa a exe también es muy útil.
Los otros lenguajes señalados en esta pregunta (VbScript, PowerShell, Batch) son muy populares y compatibles. Si ya conoce un lenguaje de secuencias de comandos y se siente cómodo con él, de cualquier manera, hágalo.
Si está a punto de invertir en elegir un nuevo idioma, le sugiero dos idiomas, dependiendo del trabajo que esté tratando de hacer:
JavaScript (a través de WSH) : use JavaScript si desea usar varios objetos de automatización al crear instancias y llamar a su modelo de objetos. Puede crear un objeto de automatización para casi todo, desde el servidor de Exchange hasta WMI y documentos de Office. Hay un soporte de depuración con Visual Studio (con el argumento / x). Además, una inversión en JavaScript demostrará ser útil en HTML.
Perl : use Perl si puede para iniciar otros programas, manipular su salida y realizar expresiones regulares. Aunque parece que este idioma está actualmente en declive, sigue siendo un idioma muy popular, muy bien compatible con un gran idioma de la comunidad. También debe considerar este lenguaje para comunicarse con otros servicios (no necesariamente Windows), como un JIRA en la empresa o EC2 en Amazon. La depuración se admite en eclipse con EPIC, que también es un buen entorno IDE (coloración de sintaxis, etc.). Hay módulos en CPAN para todo. El conocimiento de Perl demostrará ser útil al tener que automatizar en máquinas que no sean Windows.
En los primeros días, había VBScript seguido de Batch, en el entorno corporativo con Windows 7 puro y Server 2008 R2, el nuevo lenguaje de secuencias de comandos Powershell está llamando mucho la atención.
Secundo la recomendación para Perl, si estás dispuesto a escribir algunos scripts de Perl. Las personas con las que trabajo han utilizado con éxito y recomiendan CLR Script (un poco viejo), y para crear scripts de interacción web, iMacros
Podría ser casi cualquier cosa, dependiendo de lo que intentes automatizar. Va a variar desde archivos por lotes y PowerShell hasta autohotkey y Selenium (si necesita automatizar algunas tareas relacionadas con la GUI).
Por lo general, no es un problema aprender uno, si necesita agregar algunas modificaciones o admitir scripts ya escritos. Si necesita desarrollar algo nuevo, elija el idioma o la forma según los requisitos y lo que ya sabe.