Como lenguaje de script, ¿cuál será mejor para hacer carrera con Powershell o Python?

He estado usando ambos idiomas en mi trabajo actual. La mayoría de los sistemas que administro son Windows, algunos son Linux. Pero, soy un amante de Linux y FOSS de corazón.

Así que créanme cuando digo que quería odiar a PowerShell, realmente lo hice. Y lo hice al principio, especialmente 1.0.

Durante el último año, había estado tocando algunos de los scripts heredados de PowerShell (PS) que un empleado anterior había dejado y que todavía estaban en uso. Necesitaba expandirlos y decidí actualizarlos más. (Creo que se construyeron en PS 2.0 y tenían muchos ismos de PS 1.0 y 2.0). Entonces, lentamente comencé a abrirme camino a través de ellos.

Algo mágico sucedió.

Viniendo de un fondo BASH para gran parte de mi automatización de administración de Linux, con algo de Python en la parte superior, estaba bastante acostumbrado a canalizar cosas de un proceso / programa / shell incorporado a otro.

Pero no estaba acostumbrado a las cosas que estaba haciendo como objetos. “Espera un minuto …” me dije a mí mismo. “¿Puedo canalizar la salida de Get-Process través de Export-CSV y obtener un archivo CSV? … con encabezados adecuados para las propiedades de cada proceso O … a través de Out-Gridview y obtener una representación gráfica? Bueno, está bien, pero …”

Y luego las cosas se pusieron más locas. Para ampliar ese ejemplo, podría obtener una lista de procesos, canalizarla a través de Out-GridView -PassThru , lo que permitiría al usuario seleccionar una línea de pedido, que luego pasaría. Entonces … OK, $SomeProcess = Get-Process | Out-GridView -PassThru $SomeProcess = Get-Process | Out-GridView -PassThru : eso está bien, pero ¿qué es eso ahora? En BASH, $ SomeProcess sería, por ejemplo, el PID de un proceso. ¿Pero aquí? Es un objeto que realmente representa el proceso. Entonces, $SomeProcess.id . El PID (equivalente) es una propiedad del objeto. Pero que mas? Métodos? $SomeProcess.Kill() o .WaitForClose() o .GetHashCode() o …

¿Pero qué puedes hacer con él? Bueno, es posible que recuerde todo eso de .NET Framework, básicamente la API moderna de Windows de Microsoft. Resulta que puedes hacer * literalmente * cualquier cosa que pueda hacer el framework, con un poco de esfuerzo. Eso está bien, pero ¿qué puedes hacer fácil y bien?

Casi todo. Vea, entre .NET y WMI y algunas otras cosas, Microsoft ha abstraído todo el sistema operativo en objetos con los que podemos trabajar, y ha escrito cosas de PS que lo manejan.

Así que casi todos los productos de Microsoft pueden ser consultados / gestionados / manipulados a través de Powershell. Y también la mayoría de las cosas por encima de los principales proveedores. VMWare (que también tiene opciones de Python, por supuesto), por ejemplo.

Quería odiar a PowerShell. Lo hice al principio, y luego no. Pero, ahora lo hago de nuevo. ¿Quieres saber por qué?

Odio PowerShell, porque no está disponible para Linux, y me di cuenta en parte de por qué no puede estar disponible para Linux. PowerShell me expuso a qué tan “unificado” es Windows (o se puede hacer que parezca) y cuán heterogéneo es Linux.

No puedo imaginar la posibilidad de administrar sistemas Linux, incluso de un solo proveedor, de la forma en que administro sistemas Windows con PowerShell; Hay demasiadas piezas móviles creadas por demasiados proveedores sin API unificada.

PowerShell me obligó a reconocer las deficiencias en mi plataforma preferida (Linux).

Además, es una alegría trabajar con él.

Si estás escribiendo software? Pitón. Si estás haciendo administración de sistemas? Potencia Shell.

¿Si quieres ser esa persona que está en TI pero que realmente entiende el lado de los desarrolladores? PowerShell y Python. Pero ahora te lo diré: si quieres ser un administrador de sistemas y vas a tocar las máquinas Windows, PowerShell es invaluable. Cambió completamente mi opinión sobre Windows e incluso Microsoft. Sí, todavía desearía que no fueran propiedad de código cerrado en todo el lugar, pero ¿sabes qué? Las herramientas son geniales.

Todo esto dicho? Tendrás que sacar mi Python de mis manos frías y muertas.

Si tiene que hacer esta pregunta, entonces debe examinar realmente si desea estar en el campo del software. Hay literalmente docenas de lenguajes de script que incluyen Perl, Python, bash, PowerShell, Ruby, Lua, por nombrar algunos. Lo que realmente quiere aprender es cómo escribir código sin importar el problema que se le presente. Los idiomas son como herramientas en tu arsenal. Cada uno tiene sus propias fortalezas y debilidades. Si quieres hackear alguna utilidad en Linux / UNIX, Perl es mejor, debido a sus raíces orgánicas en UNIX. Python es excelente en varias tareas de creación de prototipos, aunque hoy en día se desarrollan muchas aplicaciones grandes en Python, como OpenStack.

Incluso entonces, es posible que deba agregar enlaces a estos lenguajes en lenguajes compilados como C o C ++, para acelerar la ejecución.

PowerShell es más útil en el entorno de Windows, aunque los kits de herramientas como cygwin facilitan la ejecución de scripts Python o Perl desde UNIX en la plataforma Windows.

En última instancia, es posible que deba crear sus propias bibliotecas en cualquier idioma, según el dominio en el que esté trabajando.

En pensar, es mejor aprender una sección transversal de lenguajes como C, C ++, Python, Perl Ruby PowerShell, etc. y aprender generalidades, similitudes y modismos, idiosincrasias de estos lenguajes en lugar de solo un idioma.

He sido ingeniero de software durante unos 10 años y tengo mucha experiencia con ambos idiomas. De hecho, diría que estos son los 2 idiomas que más he usado, probablemente.

La respuesta depende de qué tipo de desarrollo desea hacer. Si va a trabajar en una tienda de Microsoft haciendo trabajos de desarrollo, entonces diría Powershell. Si ese no es el caso, diría Python.

La forma más fácil de pensarlo es que Powershell será una mejor opción si está haciendo algún tipo de script con Active Directory, Exchange, SQL Server, etc. En mi opinión, Python funciona mucho mejor en sistemas Unix y trata Windows como algo de último momento. Sin embargo, si ese pequeño nicho no es lo que vas a hacer, Python será el camino a seguir.

Python es mucho más versátil y es un lenguaje de programación más tradicional. Tiene clases, herencia, mixins, etc. Todos los mecanismos avanzados que esperarías ver en un idioma. Debido a esto, puedes hacer casi cualquier cosa con él. Sin embargo, ese no es el caso con Powershell, aunque PS sí agregó soporte de clase en PS 5. Sin embargo, PS nunca fue un lenguaje de programación completo. Solo un lenguaje de shell, diseñado para chicos de IT Ops, y para hacer trabajos de automatización.

No me malinterpretes. Me encanta Powershell y soy uno de sus mayores campeones. Creo que MS lo eliminó del parque con el diseño de Powershell, y no recibe suficiente crédito. Soy un verdadero enemigo de Windows, pero es literalmente imposible odiar Powershell si te tomas el tiempo de aprenderlo. El concepto de objetos en una tubería es extremadamente poderoso. Incluso he enseñado clases de Powershell, pero aprender Python le servirá mucho mejor cuando llegue el momento de aprender javascript, C # o Swift o lo que sea, y definitivamente será un desarrollador más completo al elegir python.

Además, hay muchos más trabajos en Python que Powershell. Lo digo por experiencia. Sin embargo, personalmente recomendaría aprender ambos. Ambos son excelentes idiomas, y los uso a diario.

Por lo que he visto, apuntan a diferentes nichos.

Powershell es principalmente un lenguaje de administración del sistema; se usa para configurar y controlar e investigar software y servidores, pero dudo que demasiadas personas estén escribiendo proyectos más grandes en él.

Python es un lenguaje de script genérico. No está tan profundamente integrado en Windows, por lo que las cosas mencionadas anteriormente serían más trabajo en él. Sin embargo, se usa para escribir casi todo tipo de programas; No importa lo que termines haciendo, existe la posibilidad de que Python encaje (o ya esté allí).

Muchos votos para Python. Sin embargo, estoy con Deepak. Si se encuentra en un entorno de Microsoft total (o incluso principalmente), entonces PowerShell es esencial, Python es un “quizás bueno tener”.

Microsoft se inclina cada vez más a requerir PowerShell para administrar y mantener sus servidores. Por lo que parece, pronto habrá un sistema operativo, MS Nano, que solo se puede administrar de forma remota a través de powershell: no tendrá una GUI o incluso un shell accesible localmente.

La automatización que puedes hacer con PowerShell realmente es increíble.

Python es un gran lenguaje. Puede hacer casi cualquier cosa con él, si está instalado. Sin embargo, no puede confiar en que esté disponible. No lo tenemos instalado en ningún lado, por lo que sus servidores de administración que usan Python simplemente no son una opción aquí. Powershell por otro lado es obligatorio.

Otros lugares pueden variar: de lo que he visto, Python es raro en las redes dominadas por MS.

Pitón
Sin embargo, si eres nuevo en todo este tema de la programación, debes comenzar por aprender un lenguaje de propósito general o al menos ser consciente de lo que realmente hace Python en la sombra por ti. Si solo está aprendiendo de lo básico, comience escribiendo en C y vea su código en asm. Paso a paso ir a un nivel más alto de abstracción. De lo contrario, no comprenderá realmente lo que sucede cuando se ejecuta su código. Después de C, puede hacer un cambio rápido a C ++, elaborar patrones de diseño orientados a objetos y moverse más arriba a Python.
Java es un buen reemplazo para C ++, sin embargo, tiene algunos trucos específicos como interfaces, anotaciones, etc.

No puedo decir nada concreto sobre Powershell, pero Python tiene bastantes aplicaciones que van desde el Numpy en gran medida académico hasta marcos web como Django. También es bastante fácil de aprender, así que eso es una ventaja.

Pertenezco a la comunidad de usuarios de Linux y la única vez que he leído sobre PowerShell es cuando alguien se queja de sus capacidades limitadas. Si desea probar las secuencias de comandos de shell, considere Bash ya que Linux es frecuente en los servidores donde las secuencias de comandos son más útiles.

Si desea hacer una carrera solo en el lado de Microsoft, entonces en algún momento se encontrará cara a cara con PowerShell.

Es parte de la CEC, lo que significa que estará presente en todos los próximos productos de Servidor. Por ejemplo: Exchange, System Center, etc., tienen alguna forma de automatizarlos usando PowerShell.

Yo diría Python. Solo revise las publicaciones de trabajo en los sitios de ofertas de trabajo, ¡encontrará la respuesta!
Recuerde, la necesidad es el futuro!

Si está tratando de comenzar una carrera como profesional de Microsoft, PowerShell. Si prefiere OpenSource o es un desarrollador multiplataforma, probablemente Python.

No he escuchado mucho sobre PowerShell, pero Python es realmente bueno y también es fácil de aprender.

More Interesting

¿Qué debo elegir: GATE o un trabajo? El trabajo es más importante que M.Tech.

Cómo prepararse para una entrevista de empresa

¿Cuáles son las perspectivas de carrera como escritor técnico?

Cómo elegir entre estas dos ofertas

¿Cuáles son algunas de las mejores firmas de banca de inversión que contratan a estudiantes de primer año de ingeniería de la India fuera del campus?

¿Cuáles son algunas herramientas de software importantes para que una startup las use desde el día 1?

Cómo conseguir tu primer trabajo como diseñador de juegos

Trabajo como diseñador web en una gran empresa, pero me gustaría hacer la transición para hacer más diseño de impresión y / o dirección de arte. ¿Algún consejo o sugerencia sobre cómo hacer esto?

¿Cuáles son algunos buenos tratamientos avanzados de ciencia de datos, específicamente después de completar la especialización de ciencia de datos en Coursera?

¿Cómo es estar casado con un nerd?

¿Por qué muchas ofertas de trabajo van solo a IIT?

Tengo más de 3 años de experiencia trabajando en Java. ¿Cómo me cambio a otro trabajo? ¿Cuáles son algunas ideas?

Soy un ingeniero mecánico nuevo Quiero poner en marcha ¿Qué tipo de arranque puedo hacer?

Estoy en el duodécimo estándar y quiero ir a la animación y efectos visuales en la realización de películas. ¿Cómo puedo obtener un trabajo bien remunerado, ya sea en India o en cualquier otro lugar?

Tengo 31 años y recién comencé a aprender codificación. ¿Es posible para mí conseguir un trabajo en Silicon Valley antes de los 35 años? En caso afirmativo, ¿qué debo aprender y qué debo hacer para conseguir el trabajo?