2009-12-02 15 views
31

¿Cuáles son las ventajas de Python, PowerShell y otros entornos de scripting? Nos gustaría estandarizar nuestros scripts y actualmente estamos utilizando los archivos bat y cmd como estándar. Creo que Python sería una mejor opción que estos, pero también estoy investigando PowerShell y otras herramientas de scripting.Python, PowerShell u otro?

Las secuencias de comandos se utilizarán para desencadenar procesos como wget, etc., para llamar a servicios web u otras aplicaciones/herramientas que deban ejecutarse en un orden específico con parámetros específicos.

Principalmente trabajamos con la pila de Windows, pero existe la posibilidad de que necesitemos compatibilidad con Unix en el futuro.

Gracias.

+0

¿Qué sistema (s) operativo (es)? – Bratch

+1

Esta pregunta tiene algunas respuestas inútiles. Son personas que son buenas en Python o personas buenas en PowerShell ... Si está interactuando con Active Directory, PowerShell es de lejos la manera más fácil. Si está escribiendo aplicaciones de GUI o necesita soporte multiplataforma, probablemente Python. Cada idioma hace cosas diferentes mejor que el otro. –

Respuesta

14

IronPython tiene acceso a todos los mismos ensamblajes .NET que cualquier otro lenguaje .NET para escribir scripts dependientes del sistema en Windows. Pero el mismo conocimiento de Python se puede utilizar para escribir scripts similares en Linux, Solaris, BSD u OS/X. Si usa el Python C estándar en Windows, entonces puede acceder a cualquier objeto COM y es sencillo traducir los ejemplos de VBA al código de Python. El plugin de SPAMBayes Outlook es un buen ejemplo de qué tan lejos puede llegar con eso. http://spambayes.sourceforge.net/

La mejor característica de Python es la biblioteca estándar "baterías incluidas", y aunque esto no se distribuye con IronPython, gran parte de esto funcionará si solo apunta a IronPython a la carpeta de la biblioteca instalada desde CPython. De hecho, la mayoría de las bibliotecas puras de Python, es decir, no compilados en C o C++, funcionarán bien con IronPython. En Windows, también tiene la opción de instalar Python a través de Cygwin.com, que luego le permite utilizar una gran cantidad de módulos que normalmente se consideran de solo UNIX. Esto puede ser útil si tiene que mantener scripts multiplataforma y prefiere la coherencia en lugar de la codificación de casos especiales para cada sistema operativo.

Y si necesita aprovechar algunas clases de Java, entonces Jython le permite usar el mismo lenguaje de Python que usted conoce para aprovechar esto. Combine esto con un buen sistema de cola de mensajes como RabbitMQ, y puede tener scripts de Python, Jython y IronPython en múltiples máquinas, todos cooperando para hacer el trabajo.

También hay una gran selección de módulos de Python de terceros y puede pasar varios meses navegando por delicious.com antes de quedarse sin nuevos descubrimientos. Esto significa que cuando necesita algo que no forma parte de las bibliotecas estándar de Python, una buena parte de Google arroja una solución.

Algunos módulos de Python útiles para secuencias de comandos para reemplazar fiesta, CMD y archivos BAT son PEXPECT http://www.noah.org/wiki/Pexpect y Python WMI http://timgolden.me.uk/python/wmi/index.html

Pero, al final, Python también funciona muy bien para las secuencias de comandos simples y sencillas que no necesitan ningún características especiales ... todavía!

+2

Otra ventaja de IronPython sobre PowerShell es que para los sistemas operativos de versiones anteriores, siempre y cuando tengas .net ya presente, se puede implementar solo con una implementación XCOPY. –

1

Las preguntas son algo vagas, pero Python es mucho más portátil que PowerShell; sin embargo, Python no es tan frecuente en Windows. Pero, por otro lado, no creo que los scripts de PowerShell funcionen en un equipo con Windows que no tenga PowerShell. Lo que significa que es posible que no funcionen en el antiguo shell de cmd. Creo que encontrarás más documentación y bibliotecas para Python también.

Powershell es más parecido a Bash que a un lenguaje de programación como Python.

Quizás podría explicar lo que quiere hacer con sus scripts y probablemente obtendrá mejores respuestas.

+0

La pregunta fue editada para ser más clara, por lo que mi respuesta puede parecer un poco tonta. – jonescb

+0

¿por qué no editamos la respuesta? –

+0

Estás muy equivocado; PowerShell ** es un lenguaje de programación orientado a objetos **. También está en cierto grado equivocado sobre la portabilidad: existe una API para portar Powershell en un entorno UNIX –

2

Una ventaja de Python es la disponibilidad de bibliotecas de terceros y una extensa biblioteca estándar incorporada. Puede hacer muchas operaciones potentes de manera rápida y fácil con Python en una variedad de sistemas operativos y entornos. Esa es una de las razones por las que utilizamos Python aquí en la oficina no solo como lenguaje de scripting, sino también para todas nuestras aplicaciones back-end de base de datos.

También lo usamos para raspar XML y HTML, usando ElementTree y BeautifulSoup, que son bibliotecas muy poderosas y flexibles de Python para este tipo de trabajo.

44

Python funciona como una gran herramienta para todo uso si está buscando reemplazar scripts CMD y BAT en sus cuadros de Windows, y también se puede escribir para ejecutar scripts en sus cuadros de inux (L). Es un lenguaje excelente y flexible, y puede manejar muchas tareas que se le presenten.

Dicho esto, Powershell es una herramienta increíblemente versátil para administrar todo tipo de cuadros de Windows; tiene todo el poder de .NET, con muchas más interfaces en productos de MS como Exchange y Active Directory, que ahorran tiempo. Dependiendo de su situación, puede obtener más uso de PS que otros lenguajes de scripting solo por las interfaces disponibles para los productos de MS, y sé que MS parece haberse comprometido a proporcionar esas API en muchos productos. Powershell viene instalado en todas las versiones actuales de Windows (Windows 7+, Windows Server 2008+) y se instala bastante fácilmente en versiones anteriores.

Para abordar su edición que sus scripts se utilizarán para iniciar otros procesos, creo que en ese caso cualquiera de las herramientas se ajusta a la ley. Recomendaría PS si planea agregar tareas de administración a las secuencias de comandos en lugar de solo llamadas de servicio, pero si se atiene a lo que describió, Python es bueno.

+4

+1 Respuesta bien equilibrada. – micahwittman

+0

+1 Buena respuesta, pero creo que necesita especificar en qué sistema operativo (s) planea hacer esto para obtener una mejor respuesta. – Bratch

+0

No puedo hablar en nombre de Powershell pero Python fue una forma más agradable de crear MS Word (a través de OLE Automation) que VBA. – jfs

2

Me parece triste nadie aún mentioend bueno ol 'Perl.

+0

PowerShell es uno de su progenie, sin embargo. –

+0

PowerShell todavía está en sus raíces, y está disponible normalmente solo por debajo de 7 (sí, sé que se puede instalar en xp). Aunque Perl no es nativo en Windows, todavía lo encuentro más práctico, ya que existe para todas las versiones de Windows y muchos de sus usos son portátiles. Sin mencionar que probablemente cualquier cosa que el operador quiera que alguien ya haya hecho en él <- llámalo trampas :) (no apoyando al PS, simplemente presentando la cruel realidad). – Rook

1

Si está trabajando con secuencias de comandos basadas en web, ActivePython de ActiveState parece tener una gran cantidad de compatibilidad con Windows specific API's que le vendría bien y tiene toneladas de geniales bibliotecas portátiles para realizar trabajos basados ​​en web.

18

Queremos estandarizar nuestros scripts y actualmente estamos utilizando los archivos bat y cmd como estándar.

Parece que Windows es su entorno predominante.

Si es así, PowerShell sería mucho mejor que Python.

  • PowerShell se incluye con Windows Server 2008. No hay necesidad de implementar /instalar Python en tiempo de ejecución en cada nuevo servidor que rueda en.
  • Todo el software relacionado servidor de Microsoft (Exchange, Centro de Sistemas, etc) que está en transición hacia cmdlets de PowerShell para la funcionalidad y extensiones
  • vendedores de 3 ª parte (por ejemplo, SCOM plugins) también utilizará scripts/cmdlets de PowerShell para exponer la funcionalidad

Tengo más experiencia con Python que con PowerShell pero la escritura está en la pared en cuanto al ecosistema de Microsoft: vaya con PowerShell. De lo contrario, se irá contra corriente y se interpondrá constantemente entre Python y los cmdlets de todos los demás.

El hecho de que pueda codificar import win32com.client en Python no lo pone en pie de igualdad con PowerShell en el entorno de Windows.

3

Si todo lo que hace es generar un montón de programas específicos del sistema sin o con poca lógica de programación, entonces el shell específico del sistema operativo podría ser una mejor opción que un lenguaje de programación de propósito general completo.

Cuestiones relacionadas