¿Qué lenguajes de script son útiles en Windows? [cerrado]


48

¿Qué lenguajes de script son útiles para la automatización de Windows?


10
Di +1 porque puedo ver una pregunta interesante escondida detrás de lo que escribiste. Sin embargo, creo que "main" es una elección de palabras desafortunada que debes editar para que sea menos vaga. Quizás "más comúnmente usado", "mejor soportado" o "recomendado", dependiendo de lo que quiera decir. ¡Bienvenido a SuperUser! :)
Brennan Vincent

2
@Brennan Vincent: Esa es una gran sugerencia, pero cambiar la palabra "principal" en este punto puede restar valor al espíritu de las respuestas. Creo que su comentario dice mucho sobre este asunto, y que la pregunta es mejor dejarla como está. (+1 para ti por eso, por cierto.)
Randolf Richardson

1
Por el momento creo que esta pregunta cae en la categoría subjetiva. Sin embargo, con una pequeña modificación de la redacción como Brennan sugiere, creo que podría ser una entrada wiki comunitaria bastante interesante.
Joe Taylor

1
A mí también me parece subjetivo. Para los lenguajes de secuencias de comandos, "principal" o "mejor" o "preferido" diferirían en función de la tarea particular que se realiza y la habilidad y experiencia de un individuo.
Iszi

3
Considero que la pregunta significa: ¿cuál es el lenguaje de secuencias de comandos nativo para Windows hoy ?, es decir, ¿qué lenguaje de secuencias de comandos tiene ganchos y funciones incorporados en el sistema operativo en lugar de requerir API, ActiveX, etc. para hacer las cosas?
Synetech

Respuestas:


36
  1. Potencia Shell
  2. Windows Scripting Host
    a. VBScript
    b. JScript
  3. Archivos por lotes

PowerShell (v2.0)

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 Scripting Host

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.

VBScript

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

JScript

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");
}

Comandos de archivos por lotes

Existe, por supuesto, el buen archivo Batch. No necesitan introducción.


77
En cuanto a Windows 7 y Server 2008, sería Powershell 2.0
muestra

@show acuerda ser específico sobre 2.0
Nick Josevski

"No necesitan introducción". Pero el qué necesita un Extro ...
Glenn Jackman

16

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.


10
Si por lenguaje de script "principal" te refieres a "más antiguo y más utilizado", esta es definitivamente la respuesta correcta. Sin embargo, cmdrealmente es una monstruosidad, fácilmente el PEOR lenguaje de scripting de shell que he tenido la desgracia de usar.
JSB ձոգչ

3
Yo también uso archivos por lotes cuando el script necesita ser usado en otras versiones de Windows. Si solo se trata de Win7 / Server 2008, PowerShell es el camino a seguir.
jtreser

55
1 Yo sé MS deseos PowerShell ser que , aunque de momento si desea enviar a alguien un script que ejecuta "ventanas", usted tiene que enviar un archivo por lotes de DOS. PS es ideal para ciertas versiones de Windows para ciertas tareas y exponen mucha potencia, pero los archivos por lotes son universales.
Alan Jackson

En algunas empresas, por ejemplo, el banco para el que trabajo actualmente, la política de ejecución evita que se ejecuten los scripts de PS. Por lo tanto, estoy aprendiendo lotes para traducir mis scripts de PS. Así que hay algunas situaciones en las que todavía se necesita Batch ...
T_D

Estuve de acuerdo con su respuesta en 2011, pero con Windows 10 Creators Update, Microsoft hizo que PowerShell sea el predeterminado para presionar Win + X, escribir 'cmd' en el menú Inicio y mantener presionada la tecla Ctrl al hacer clic derecho en el Explorador. Así que ahora considero que Powershell es el lenguaje de secuencias de comandos predeterminado para Windows, desde Windows 10 Creators Update, y las secuencias de comandos heredadas de BAT / CMD.
Jonas

10

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.


2
+1 por mencionar lenguajes de script multiplataforma (Perl es mi favorito, y sé que Python también ha ganado popularidad a lo largo de los años).
Randolf Richardson

2
+1 para Perl. Es útil en muchas plataformas y tiene algunos módulos específicos de Windows.
RedGrittyBrick

1
Agregaría que TinyPerl es una forma muy útil de incrustar un script Perl simple con no demasiadas dependencias. Se compilará en un pequeño archivo EXE en Windows. tinyperl.sourceforge.net
Benoit

4

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. .)


[el estremecimiento se intensifica], solía escribir eso. ¿Sabes que puedes ejecutar scripts arbitrarios de WSH desde IE? ¿No es pintoresco? Agradable cómo abren gran parte de su API a la web. (Descargo de responsabilidad, este cinismo está fechado por XP-SP3)
ThorSummoner

La historia sobre WSH e IE no es realmente tan simple: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (solo un ejemplo de restricciones, dependiendo de las zonas de seguridad) y IE 11 no Ya ni siquiera es compatible con VBScript, excepto en el modo heredado. No confíe en IE para ejecutar scripts WSH.
Jonas

4

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.


Como monoceres, yo uso AutoIt . Es extremadamente versátil para incluso prototipos rápidos y conceptos de prueba en pocos minutos. Entre eso, está diseñado para la automatización, que es para lo que veo mucha gente que usa Powershell. Pruébalo :)
James

1
AutoIt es bastante bueno, especialmente para las funciones de la interfaz de usuario (que actúan como un usuario escribiendo en un cuadro de diálogo, presionando botones, etc.), pero sería una verdadera exageración llamar al lenguaje de script de Windoze "principal". En estos días, la mayoría de mis colegas (en un equipo de más de 20 administradores de Windows) ni siquiera han oído hablar de eso.
ewall

2

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.


1
Python es una muy buena alternativa a Perl, aunque las cosas para las que
usarías

1

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.


Parece que estás expresando un gran deseo de que PowerShell se haga cargo. ¿Sería justo asumir que "quieres que sea" PowerShell? ;-D
Randolf Richardson

Prefiero powershell sobre vbscript sí.
EKS

1

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


1

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.